我正在学习ASP.NET MVC。我有一个服务文件夹,其中有一个类从XML文件中读取数据。我已经创建了一个我认为(?)应该工作的控制器,我也试图为此创建一个视图但由于某种原因我无法通过intellisense来自动完成@model,这让我觉得我已经做错了。另外,当我尝试从视图中访问模型属性时(例如Model.Description
- 如果这甚至是语法?)我会发现许多错误{和}错误。我做错了什么?
控制器:
public ActionResult Index()
{
NewsReader newsReader = new NewsReader(); //Read news from file
var newsItems = newsReader.GetNewsItems();
return View(newsItems);
}
到目前为止,这就是我对观点的全部看法:
@Model IEnumerable<TestSite.Services.News.NewsItem>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
<ul>
@foreach(Model.Description)
{
}
</ul>
</div>
</body>
</html>
答案 0 :(得分:3)
请参阅@ {Erik Funkenbusch对MVC @model meaning
的解释@符号是告诉Razor引擎接下来的指令 是代码,它应该编译而不是简单地将其写入 输出
所以当你输入
@model blah这是由razor编译的,并告诉Razor引擎 模型的类型是&#39; blah&#39;,因此当您使用关键字时 模型(注意大写M,你必须使用@符号作为 (好)它将引用您定义的模型(在本例中为blah)。
因此,应采取以下措施进行更正:
//@Model IEnumerable<TestSite.Services.News.NewsItem>
@model IEnumerable<TestSite.Services.News.NewsItem>
//@foreach(Model.Description)
@foreach(var item in model.Description)
{
}
我建议您阅读Getting Started with ASP.NET MVC 5以了解有关ASP.NET MVC 5的一些基础知识.MVC 5使用Razor引擎进行视图样式设置。