2014-01-11 48 views
1

我有一個用於模型視圖ViewSetup的編輯器模板。我使用模板視圖簡化爲使用編輯器模板枚舉mvc模型的表單提交

@model IEnumerable<ViewSetup> 
@Html.EditorFor(s => s) 

我ViewSetup編輯模板有表單提交如下圖所示:

using (Ajax.BeginForm("Edit", new AjaxOptions() { HttpMethod = "Post" })) 
{ 
    @Html.HiddenFor(p => p.TradingPartner.ID) 
    <input type="submit" value="Save" /> 
} 

所以基本上我需要一個形式可枚舉的每個元素提交。但是我在表單提交時遇到了問題。我到後處理過程控制器:

public ActionResult Edit(ViewSetup formDataSent) 
{ 
    formDataSent.Save();  
} 

按默認模型結合我的TradingPartner財產越來越空,因爲在HTML中的名稱是:

<input name="[0].TradingPartner.ID" type="hidden" value="1"/> 

我需要的是隻提交每個元素上的ViewSetup對象而不是數組。如果我可以刪除可以爲我工作的名稱中的索引部分。但是我不確定如何在表單提交中獲得ViewSetup對象。

回答

0

我敢打賭,如果你把你的編輯器放在一個項目而不是項目列表上,那麼你將獲得更多的靈活性。

@model IEnumerable<ViewSetup> 

@foreach (var item in Model) 
{ 
    @Html.EditorFor(modelItem => item.TradingPartner) 
} 
+0

不,但我有許多ViewSetup模型的屬性。它比這更復雜,但我剛纔簡化了上面的一個屬性。 – kjj

+0

也許看看使用partials。每個部分可以有一個模型,並調用其他具有子模型的部分。但是,這會增加更多的冗長度。 –

+0

我必須使用模板,因爲我必須在我的應用程序的許多地方重複使用它。 是否有某種方式我可以提交表單循環中的每個元素(只有我看到的方式是沒有索引獲得添加到html名稱)..謝謝。 – kjj

0

我有同樣的問題,有什麼解決這對我來說是這樣的:

@foreach (var item in Model) 
{ 
    @Html.EditorFor(modelItem => item.TradingPartner, null, "") 
} 

的EditorFor的第三個屬性被空白將擺脫「[0]」從你的對象。