你的第二个参数就是这个页面的Model,然后你在_News这个view里用Model.type, Model.len就可以访问了。
@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>
@红尘中迷茫: 刚才没有注意到你的这个PartialView是不在同一个文件夹下的,所以你view中的c#代码会被编译到不同的dll中去,而匿名类型是internal的,所以无法在partial view中访问到。比较简单的解决方案就是用强类型view。
@红尘中迷茫: 或者用ViewData来传递,缺点是没有强类型检查,容易错。
@{ ViewData["len"] = "20"; ViewData["type"] = "2"; ViewData["showPic"] = true; } @Html.Partial("Partial/_News", this.ViewData);
@水牛刀刀:
感谢你的回复。页面中使用@Html.Partial不下几十处。。如果每个都写 ViewData["len"] = "20";肯定重复了,没有其他办法直接在一行内,传值给@Html.Partial吗?
@红尘中迷茫:
搞定了,传递一个定义好的类就OK
@红尘中迷茫: 是啊,就是我上面说的用强类型view啊.
怎么解决的呢?求指教,或给段代码,谢谢大神
http://edi.wang/Post/2012/8/2/ways-to-call-partialview-in-aspnet-mvc3