在每个循环中使用部分视图的问题

时间:2010-05-02 11:39:01

标签: asp.net-mvc model-view-controller asp.net-mvc-2 views partial-views

我在这里有点困惑,我正在尝试在每个循环中使用部分视图,如此

    <% 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">&nbsp;</div>
        </div>

但是当我运行项目时,我被告知局部视图不理解什么是项目?

CS0103: The name 'item' does not exist in the current context

我无法理解为什么会这样做,因为我将项目传递到局部视图中?

3 个答案:

答案 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">&nbsp;</div>
</div>

部分视图必须从System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>继承。

这是第一行局部视图的样子:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>" %>

答案 1 :(得分:1)

如果你声明你使用MVCLD.Models.Article作为部分模型,那么

部分中的项应该是模型!

答案 2 :(得分:1)

您的部分控制“articlelisttemaple.ascx”应该在控件的顶部有以下内容。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVCLD.Models.Article>" %>

这表明该视图具有类型的模型:“MVCLD.Models.Article”。

在部分视图中使用“模型”代替“项目”。