我一直使用DropDownListFor
這樣一般使用DropDownListFor與反射
Html.DropDownListFor(m => m.PropertyOfTheModel, SelectionList)
只要你知道你正在試圖建立一個下拉列表屬性的準確名稱,這工作正常(在這種情況下:PropertyOfTheModel
)。
現在我有一個不同的任務。我的模型包含一個固定屬性,聲明爲object
,並且被稱爲FormModel
。使用反射假設我想爲FormModel
中包含的所有屬性構建一個下拉菜單。感謝我設法解決SelectionList
部分的屬性,現在我必須寫出第一個參數,但我不知道如何去做。
foreach (var property in Model.FormModel.GetType().GetProperties())
{
@Html.DropDownListFor(m => m.FormModel.GetType().GetProperty(property.Name), SelectList)
}
上面的代碼不工作:我該如何寫它?我在編寫lambda表達式方面沒有經驗:是否有任何替代方法可以生成一個只需傳遞屬性和選擇列表即可自動獲取正確selected
屬性的下拉列表?或者我必須寫出表達式?謝謝!
這是我的錯誤:
模板只能與現場訪問,屬性訪問, 一維數組索引,或單參數定製索引 表達式中使用。
FormModel中的所有屬性都是公共的嗎?也許你需要將BindingFlags傳遞給GetProperty來過濾非公共屬性? – mcliedtk
有一部分代碼我沒有發佈,但確保只有公共屬性到達DropDownListFor。沒有發佈,因爲我認爲它不相關。 – Saturnix