使用局部视图

时间:2015-06-02 23:57:50

标签: c# asp.net-mvc

我试图了解如何制作部分观点。到目前为止,我对部分视图有以下内容,称为" _News":

const char **
const char const * const *
etc.

然后在控制器中我有:

@model Site.Services.News.NewsItem

<div class="bs-callout bs-callout-primary">
        <h2>
            @Html.DisplayFor(model => item.Title)
        </h2>
    </div>

但我得到&#34; NullReferenceException&#34;当我尝试运行该应用程序时。我做错了什么?

根据评论进行编辑:

@model IEnumerable<Site.Services.News.NewsItem> - Does this belong here?

...other controller code here...

@foreach(var item in Model)
{
    Html.Partial("_News", item);
}

2 个答案:

答案 0 :(得分:3)

@model Site.Services.News.NewsItem

<div class="bs-callout bs-callout-primary">
     <h2>
         @Html.DisplayFor(model => model.Title)
     </h2>
 </div>

您的代码中存在语法错误,应该是model.Title,而不是item.Title,因为您在lambda表达式中将模型称为model

即。这是一样的: @Html.DisplayFor(x => x.Title)

编辑:

您还需要在Html.Partial

之前添加@符号
@foreach(var item in Model)
{
    @Html.Partial("_News", item);
}

请参阅:Html.Partial not rendering partial view

答案 1 :(得分:0)

好吧,我的错误,我已经解决了,我在Html.Partial上错过了@!

我很惊讶这并没有引发异常或实际显示&#34; Html.Partial ......&#34;作为实际文本。

任何人都知道为什么这些都不是这样的?如果它没有抛出异常,那么为什么它不显示为纯文本?