我如何使用强类型模型和@model?

时间:2015-06-01 00:53:32

标签: c# asp.net-mvc

我正在学习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>

1 个答案:

答案 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引擎进行视图样式设置。

And have some idea here