ASP.NET - 模型不存在

时间:2015-06-01 08:46:09

标签: c# html asp.net-mvc

我在视图中使用foreach和HTML列表时遇到问题。控制器调用一个服务,该服务返回许多项目的IEnumerable,我试图在我的视图中将这些项目显示为HTML列表。

但是,我得到了" CS0103:名称'型号'在当前背景下不存在"在我看来的第7行。据我所知,我已经有了正确的语法来显示模型中的东西。

出了什么问题?

我有一个这样的模型:

public class NewsItem
{
    public DateTime PublishDate { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Content { get; set; }
}

和这样的控制器:

public ActionResult Index()
{
    NewsReader newsReader = new NewsReader();
    var newsItems = newsReader.GetNewsItems();

    return View(newsItems);
}

和我的观点:

@model IEnumerable<Site.Services.News.NewsItem>
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}


@foreach(var item in model)
{
    <ul>
        <li>@Html.DisplayFor(m => model.Title)</li>
    </ul>
}

3 个答案:

答案 0 :(得分:6)

您应该将“模型”大写并在DisplayFor中使用“item”:

@foreach(var item in Model)
{
    <ul>
        <li>@Html.DisplayFor(m => item.Title)</li>
    </ul>
}

答案 1 :(得分:2)

首先,模型属性是pascal cased,因此应该是Model

其次,它属于IEnumerable<NewsItem>类型,因此不会拥有属性Title,并且与您正在迭代的个人item无关。您的lambda表达式应引用item

@foreach(var item in Model)
{
    <ul>
        <li>@Html.DisplayFor(m => item.Title)</li>
    </ul>
}

答案 2 :(得分:0)

对于MVC中的.aspx页面: -

<table>
<% foreach (var item in Model) { %>
<tr><td><%= item.title %></td></tr>
<% } %>
</table>

对于MVC中的Razor引擎页面: -

@foreach(var item in Model)
{
<ul>
    <li>@Html.DisplayFor(m => item.Title)</li>
</ul>
}