首页 新闻 会员 周边

asp.netmvc3中的@Html.Partial如何传递参数?

0
悬赏园豆:5 [已解决问题] 解决于 2013-04-08 17:40

比如:

@Html.Partial("Partial/_News",new{len="20",type="2",showPic=true})

 

另外Partial页面如何接收这些参数呢?

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2013-04-08 14:52
< >
分享
最佳答案
0

你的第二个参数就是这个页面的Model,然后你在_News这个view里用Model.type, Model.len就可以访问了。

收获园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2013-04-08 14:58

@Model.type这样写会出现 'object' does not contain a definition for 'type' 错误。

_News.cshtml内容如下

@{
    HT.ESS.Mvc.Models.DataEntities db = new HT.ESS.Mvc.Models.DataEntities();
    var list = db.News.Where(n => n.Status == 1 && n.Commend && n.CategoryId==6).OrderByDescending(n => n.NewsId).Take(8).ToList();
}
<ul>
@Model.type
@foreach (var news in list)
{
    <li>@Html.ActionLink(news.Title, "Details","News", new { id = news.NewsId },null)</li>
}
</ul>
红尘中迷茫 | 园豆:60 (初学一级) | 2013-04-08 15:20

@红尘中迷茫: 刚才没有注意到你的这个PartialView是不在同一个文件夹下的,所以你view中的c#代码会被编译到不同的dll中去,而匿名类型是internal的,所以无法在partial view中访问到。比较简单的解决方案就是用强类型view。

水牛刀刀 | 园豆:6350 (大侠五级) | 2013-04-08 15:35

@红尘中迷茫: 或者用ViewData来传递,缺点是没有强类型检查,容易错。

@{
    ViewData["len"] = "20";
    ViewData["type"] = "2";
    ViewData["showPic"] = true;    
}
@Html.Partial("Partial/_News", this.ViewData);
水牛刀刀 | 园豆:6350 (大侠五级) | 2013-04-08 15:42

@水牛刀刀: 

感谢你的回复。页面中使用@Html.Partial不下几十处。。如果每个都写 ViewData["len"] = "20";肯定重复了,没有其他办法直接在一行内,传值给@Html.Partial吗?

红尘中迷茫 | 园豆:60 (初学一级) | 2013-04-08 16:19

@红尘中迷茫: 

 

搞定了,传递一个定义好的类就OK

红尘中迷茫 | 园豆:60 (初学一级) | 2013-04-08 17:40

@红尘中迷茫: 是啊,就是我上面说的用强类型view啊.

水牛刀刀 | 园豆:6350 (大侠五级) | 2013-04-09 09:58
其他回答(2)
0

怎么解决的呢?求指教,或给段代码,谢谢大神

中国人的悲哀 | 园豆:202 (菜鸟二级) | 2014-07-30 11:22
0

http://edi.wang/Post/2012/8/2/ways-to-call-partialview-in-aspnet-mvc3

chy710 | 园豆:167 (初学一级) | 2017-05-25 18:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册