由于ListOfPersons
不是已声明的变量,只是表达式的参数名称,所以表达式是有效的。
要短暂地触及表达式,它们由参数集和正文组成。
(parameter set) => (body)
参数组可以是空的或()
包括1个或多个参数(x)
或(x,y)
例如。然后,主体可以使用这些参数,类似于方法主体将如何使用传入的参数。
@Html.DisplayFor(ListOfPersons => item.Id)
当在所示范围中使用时,将忽略该参数。它不使用它,类似于这样的事情
public int Id = 5;
public string DisplayFor(Person ListOfPersons)
{
return Id;
}
所以你可以从这个方面看,该参数不使用,返回的值实际上是从一个不同的范围值。
DisplayFor的作用域为使用页面的模型绑定到。因此,无论参数名称如何,传入参数的内容都将成为模型。因此,由于该参数在此处被完全忽略,所以它并不特别关心它的命名,并且可以简单地是()
或_
。
返回的值是来自正文的值,在此例中为item.Id
和item.Name
。但是,由于没有使用参数,所呈现的html将不正确,即使所显示的值看起来是准确的。
为了解决这个问题,必须正确访问模型,否则所呈现的html将不会在发布后绑定。这通常通过迭代和使用索引引用完成,如@Jonespolis' answer中所示。
这个问题也许可以帮助你http://stackoverflow.com/questions/6365633/what-is-the-html-displayfor-syntax-for – Rikard