我在这里有点困惑,我正在尝试在每个循环中使用部分视图,如此
<% foreach (var item in (IEnumerable<MVCLD.Models.Article>)ViewData["LatestWebsites"]){%>
<% Html.RenderPartial("articlelisttemaple", item); %>
<% } %>
我的部分视图看起来像这样
<div class="listingholders">
<h4><%=Html.ActionLink(item.ArticleTitle, "details", "article", new { UrlID = item.UrlID, ArticleName = item.ArticleTitle.ToString().niceurl() }, null)%> </h4>
<p><%= Html.Encode(item.ArticleSnippet) %></p>
<div class="clearer"> </div>
</div>
但是当我运行项目时,我被告知局部视图不理解什么是项目?
CS0103: The name 'item' does not exist in the current context
我无法理解为什么会这样做,因为我将项目传递到局部视图中?
答案 0 :(得分:4)
将部分视图更改为:
<div class="listingholders">
<h4><%=Html.ActionLink(Model.ArticleTitle, "details", "article", new { UrlID = Model.UrlID, ArticleName = Model.ArticleTitle.ToString().niceurl() }, null)%> </h4>
<p><%= Html.Encode(Model.ArticleSnippet) %></p>
<div class="clearer"> </div>
</div>
部分视图必须从System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>
继承。
这是第一行局部视图的样子:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>" %>
答案 1 :(得分:1)
部分中的项应该是模型!
答案 2 :(得分:1)
您的部分控制“articlelisttemaple.ascx”应该在控件的顶部有以下内容。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>" %>
这表明该视图具有类型的模型:“MVCLD.Models.Article”。
在部分视图中使用“模型”代替“项目”。