2013-03-06 75 views
0

我有一個很難搞清楚我將如何驗證裏面的型號列表/提交我的主模型內部的模型的列表。例如:驗證和郵政與模型

控制器:

[HttpPost] 
public ActionResult submitData(MyModel model){ 
    ...submit data... 
} 

型號:

public class MyModel{ 
    [Required] 
    public string Title{get;set;} 
    ... 
    [Required] 
    IList<SubModel> SubModels{getset;} 
} 
public class SubModel{ 
    [Required] 
    public string Title {get;set;} 
} 

查看:

@using(Html.BeginForm("submitData", "Home", FormMethod.Post){ 
    @Html.TextBoxFor(x=>x.Title); 
    ... Code for submodels 
} 

子模型應該能夠在飛行中添加的,這是我在javascript中設置,但子模型應該是任意的數量,取決於用戶想要添加的數量。我怎樣才能使它所以我爲子模型驗證工作,當我提交後,一切都正好放進模型。

回答

0

我命名你的輸入字段,當你使用非連續的索引建議。史蒂芬桑德森具有關於這個主題示出關於如何實現這一步一步的例子的excellent article。它使用了自定義Html.BeginCollectionItem幫手,這將照顧到產生使用的GUID集合屬性的輸入字段適當的名稱,並且尊重的默認模型使用的粘合劑的naming convention

Steven Sanderson也寫了another article,它說明了如何使用純客戶端模板來實現,而不是依靠AJAX調用添加新項目。

但要記住,無論你做什麼,一旦你提交表單,如果你想在默認模式粘結劑能夠集合屬性正確綁定您的視圖模型的命名約定應該得到尊重。