2012-12-11 43 views
2

我有一個包含集合的模型。我想將每個單獨的EditorFor包裝爲一個以單個元素作爲參數進行操作的表單。即:如何將模型集合的單個元素髮布到操作?

class ModelWithCollection 
{ 
    List<ElementModel> Elements { get; set; } 
} 

class ElementModel 
{ 
    int Field { get; set; } 
} 

public ActionResult ElementAction(ElementModel viewModel) 
{ 

} 

但是,我的viewModel沒有填充屬性。我可以理解這一點,因爲編輯器呈現的ID爲Elements[0].Field。而行動只需要Field

我該如何解決這個問題?


我不認爲我可以手動構建使用jquery或其他東西,因爲它包括上傳文件。

回答

2

There is an overload of EditorFor需要三個參數:expressiontemplateNamehtmlFieldName。如果爲templateName提供表達式null(從而告訴幫助者以常規方式解析編輯器模板),併爲htmlFieldName提供一個空字符串,則這應該呈現不帶Elements[0].前綴的字段。

<%=Html.EditorFor(m => m.Elements[i], null, string.Empty)%> 
1

您可以使用局部視圖解決此問題。如果將EditorFor移動到局部視圖(以ElementModel作爲模型),則不會生成[0]括號。

+0

感謝您的替代答案,我去了HackedByChinese,因爲這不涉及一個額外的文件(局部視圖)只是爲了這種情況。 –

+0

當然,我還爲@HackedByChinese添加了+1,我比他更喜歡他的解決方案;-) – mipe34

相關問題