代码之家  ›  专栏  ›  技术社区  ›  YodasMyDad

在for each循环中使用局部视图时出现问题

  •  1
  • YodasMyDad  · 技术社区  · 16 年前

    我在这里有点困惑,我尝试在for each循环中使用局部视图,就像这样

        <% 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 回复  |  直到 16 年前
        1
  •  4
  •   LukLed    16 年前

    将局部视图更改为:

    <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>" %>
    
        2
  •  1
  •   Morph    16 年前

    如果声明使用MVCLD.Models.Article作为分部的模型,则分部中的项应该是model!

        3
  •  1
  •   Jan    16 年前

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

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

    这表示视图有一个类型为“MVCLD.Models.Article”的模型。

    应该使用“Model”,而不是局部视图中的“item”。