我跟着本教程添加了&刪除多個文本框:http://www.itorian.com/2013/04/nested-collection-models-in-mvc-to-add.html。我想知道如何爲「EditorFor」使用多個模板。ASP.NET MVC:如何使用多個EditorTemplate?
在我的化學模型:
public partial class NPG_Chemical
{
public NPG_Chemical()
{
this.NPG_Chemical_Measurement_Methods = new HashSet<NPG_Chemical_Measurement_Method>();
}
public virtual ICollection<NPG_Chemical_Measurement_Method> NPG_Chemical_Measurement_Methods { get; set; }
internal void CreateMeasurementMethods(int count = 1)
{
for (int i = 0; i < count; i++)
{
NPG_Chemical_Measurement_Methods.Add(new NPG_Chemical_Measurement_Method());
}
}
在我的化學控制器:
public ActionResult Create()
{
var nPG_Chemical = new NPG_Chemical();
nPG_Chemical.CreateMeasurementMethods(1);
return View(nPG_Chemical);
}
在我Create.cshtml:
<div id="type1s">
<label>
Type1:
</label>
@Html.EditorFor(model => model.NPG_Chemical_Measurement_Methods)
</div>
<div id="type2s">
<label>
Type2:
</label>
@Html.EditorFor(model => model.NPG_Chemical_Measurement_Methods)
</div>
,我有一個模板:NPG_Chemical_Measurement_Method.cshtml
@model NPG_Administrative_Utility.Models.NPG_Chemical_Measurement_Method
<div class="type1" style="display:inline-block;">
<p>type1
@Html.Hidden("Measurement_Type", "Type1")
@Html.TextBoxFor(x => x.Measurement_Method)
</p>
</div>
問題是我如何可以使用另一個模板,其中包括2型EditorFor下面的代碼:
@model NPG_Administrative_Utility.Models.NPG_Chemical_Measurement_Method
<div class="type2" style="display:inline-block;">
<p>type2
@Html.Hidden("Measurement_Type", "Type2")
@Html.TextBoxFor(x => x.Measurement_Method)
</p>
</div>
現在這兩個EditorFor將全部使用的第一個模板。
您不能使用EditorTemplate來動態添加新項目到集合。參考答案[這裏](http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796)和[這裏](http://stackoverflow.com/questions/ 28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308)對於一些選項 –
@StephenMuecke我沒有問題使用EditorTemplate添加基於第一個模板的新項目。唯一的問題是如何使用第二個EditorFor的第二個。 –
不可能使用EditorTemplate來動態添加新項目,我不明白爲什麼你認爲你可以。您的'Create.cshtml'視圖正在生成2個具有相同'name'屬性的相同模板,這些模板無法綁定到集合。 –