我在视图中使用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>
}
答案 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>
}