首页 新闻 搜索 专区 学院

asp.net mvc 的部分视图展示方式区别

0
悬赏园豆:5 [已解决问题] 解决于 2015-02-28 19:35

我在部分视图中放入了一个集合:

 public ActionResult TopBanner()
        {
           var list = _ibi.Gets().ToList();
            return PartialView(list);
        }
   

在页面这样使用就错误,但是单独访问TopBanner就可以,放入首页的Index中就不行。

@Html.Partial("TopBanner")

如果这样用,就都可以,在放入的页面也可以正常访问,请问这个是怎么回事啊!

@{Html.RenderAction("TopBanner", "Home");}

 

 

@{Html.RenderAction("TopBanner", "Home");}

留下的枇杷的主页 留下的枇杷 | 初学一级 | 园豆:4
提问于:2015-02-26 10:01
< >
分享
最佳答案
0

1.单独访问TopBanner,是通过控制器转向的,model是传过来的。虽然你返回PartialView但是作用就是一个View

2.@Html.Partial("TopBanner"),是mvc的一个扩展方法,你看下源代码:

这里的意思就是根据你的@Html.Partial("TopBanner",model直接传入),根据视图页模板和model直接拼装成字符串返回(不经过控制器的)。所以你传入model就不会报错了

3.RenderAction与Html.Partial不同他会经过路由通过控制器转向。作用就跟单独访问是一样的。你看下RenderAction的源码就能理解了

收获园豆:5
SpringRen | 菜鸟二级 |园豆:412 | 2015-02-27 10:15
其他回答(2)
0

@Html.Partial("TopBanner")这种方法应该用PartialViewResult而不是ActionResult吧

DZCMS | 园豆:5 (初学一级) | 2015-02-26 10:28
0

Partial方法必须要Model有嵌套关系,而RenderAction可以分开写自己页面的Model,这样比较方便。就是依赖关系而已。

_Vegetables | 园豆:569 (小虾三级) | 2015-02-26 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册