2013-07-26 41 views
0

我想使用字符串模型屬性名稱的列表來製作窗體。當使用像這樣的腳手架代碼生成:使用屬性名稱的asp.net mvc html助手

@Html.HiddenFor(model => model.modelRecId) 

我認爲,使用反射可以得到相同的結果與這樣的代碼:

@Html.HiddenFor(model => model.GetType().GetProperty("modelRecId").GetValue(model, null)) 

可悲的是C#不喜歡這種語法,產生這個錯誤:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

任何有關如何使用內置的HTML幫助器的任何想法作爲字符串的屬性名稱?

編輯

List<string> props = new List<string>(); 
props.Add("modelRecId"); 
props.Add("Name"); 
props.Add("Description"); 
//... etc 

foreach (string prop in props) 
{ 
    @Html.LabelFor(Model.GetType().GetProperty(prop).GetValue(Model, null), prop) 
    @Html.EditorFor(Model.GetType().GetProperty(prop).GetValue(Model, null)) 
    @Html.ValidationMessageFor(Model.GetType().GetProperty(prop).GetValue(Model, null)) 
} 

上面的代碼不起作用。有沒有辦法做這樣的事情?

+0

我不知道是有辦法做到這一點使用內置的'HtmlHelper'方法;然而,你當然可以編寫你自己的'HtmlHelper'擴展方法來爲你做這個。 – shuniar

回答

1

只需@Html.Hidden("SomeProperty")

+0

嗨@max,不知道如何解決這個問題。我編輯了我的問題,這是否讓我的目標更清晰? – TechplexEngineer

+0

@TechplexEngineer對不起,我以爲'Model.modelRecId'具有屬性名稱,請參閱我的更新答案。 –