由於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