我是MVC 4的新手,(经过10年的网络形式)并且有一个我无法弄清楚的问题。
在cshtml文件中编写代码时,我正在阅读具有以下行的教程:
@Html.DisplayNameFor(model => model.City)
model => model.City
意味着什么?为什么我不能使用@Html.DisplayNameFor(model.City)
?我理解这是Linq查询,但我想理解为什么我需要model goes to model.city
?
答案 0 :(得分:3)
通常,这称为lambda expression。在您的方案中,您告诉DisplayNameFor
方法"获取我的模型,并为此属性创建一个显示元素。 " 。您无法使用model.City
,因为它只返回属性的值。方法需要的不仅仅是为您的属性创建一个显示元素。例如,它需要知道它的类型以及它的属性(如DisplayName
属性)然后它为你的元素创建一个显示元素(它应该是我猜的标签)。
DisplayName
方法正在使用Expression Trees执行此操作。该方法使用Expression<Func<TModel, TValue>>
并使用它来获取有关您的属性的名称,值和元数据信息(属性)。
如果你想使用model.City
,你仍然可以使用它,但是你不会需要DisplayNameFor
提供的功能。如果你只需要显示属性的值,你可以总是这样做:
<label> @model.City </label>
我理解这是Linq查询,
顺便说一句,这是不正确的,这不是LINQ
查询。这只是一种扩展方法。