在cshtml文件中使用模型对象

时间:2014-04-10 00:11:13

标签: c# asp.net-mvc asp.net-mvc-4 razor

我是MVC 4的新手,(经过10年的网络形式)并且有一个我无法弄清楚的问题。
在cshtml文件中编写代码时,我正在阅读具有以下行的教程:

@Html.DisplayNameFor(model => model.City)  

model => model.City意味着什么?为什么我不能使用@Html.DisplayNameFor(model.City)?我理解这是Linq查询,但我想理解为什么我需要model goes to model.city

1 个答案:

答案 0 :(得分:3)

通常,这称为lambda expression。在您的方案中,您告诉DisplayNameFor方法"获取我的模型,并为此属性创建一个显示元素。 " 。您无法使用model.City,因为它只返回属性的值。方法需要的不仅仅是为您的属性创建一个显示元素。例如,它需要知道它的类型以及它的属性(如DisplayName属性)然后它为你的元素创建一个显示元素(它应该是我猜的标签)。

DisplayName方法正在使用Expression Trees执行此操作。该方法使用Expression<Func<TModel, TValue>>并使用它来获取有关您的属性的名称,值和元数据信息(属性)。

如果你想使用model.City,你仍然可以使用它,但是你不会需要DisplayNameFor提供的功能。如果你只需要显示属性的值,你可以总是这样做:

<label> @model.City </label>
  

我理解这是Linq查询,

顺便说一句,这是不正确的,这不是LINQ查询。这只是一种扩展方法。