2015-12-07 51 views
0

我跟着本教程添加了&刪除多個文本框: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將全部使用的第一個模板。

+0

您不能使用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)對於一些選項 –

+0

@StephenMuecke我沒有問題使用EditorTemplate添加基於第一個模板的新項目。唯一的問題是如何使用第二個EditorFor的第二個。 –

+0

不可能使用EditorTemplate來動態添加新項目,我不明白爲什麼你認爲你可以。您的'Create.cshtml'視圖正在生成2個具有相同'name'屬性的相同模板,這些模板無法綁定到集合。 –

回答

-1

我相信你想要的是局部視圖。

+0

你能解釋一下怎麼做嗎?我是ASP.NET新手... –