Asp.net mvc 3 MVC数据注释和模板
在这个MVC脚手架代码中,我了解正在使用的模板,我可以定义自己的模板。 此外,还考虑了发送到视图的对象上的数据注释 但什么是模型项Asp.net mvc 3 MVC数据注释和模板,asp.net-mvc-3,Asp.net Mvc 3,在这个MVC脚手架代码中,我了解正在使用的模板,我可以定义自己的模板。 此外,还考虑了发送到视图的对象上的数据注释 但什么是模型项 @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.ReferenceNum) </td> @foreach(模型中的变量项){ @DisplayFor(mod
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ReferenceNum)
</td>
@foreach(模型中的变量项){
@DisplayFor(modelItem=>item.ReferenceNum)
在您的示例中,Html.DisplayFor的参数是一个lambda表达式:给定modelItem,您将引用modelItem.ReferenceNum属性。modelItem与Model的类型相同
备注:它应该读为modelItem=>modelItem.ReferenceNum。否则:item=>item.ReferenceNum。Short-awner是
Model
,发送到DisplayFor的lambda的参数modelItem
是同一个对象
Html
在本例中是视图类上类型的属性。在本例中,T是传递给视图的视图状态的类型
正如您所注意到的,视图在其Model
属性中公开了您的viewstate。它还将其Html
属性实例化为具有相同值的HtmlHelper,因此当您使用Html
属性时,它实际上会将相同的值再次传递给您提供的lambda
这里的名称modelItem只是lambda的名称,它可以是任何名称。
modelItem
是一个未使用的背景变量
DisplayFor
需要一个接收单个参数的方法。
该方法的实现实际上是lambda表达式的右侧:item.[SOMETHING]
。
恰好item.[SOMETHING]
完全忽略了modelitem
。
当然,将模型项
替换为项
会导致编译错误,因为项
属于模型
,并且它不是调用匿名方法{item.[SOMETHING]}
时创建的对象
这就是为什么modelitem
实际上可以是符号表中不存在的任何名称(即编译器还没有定义的名称)