2013-12-19 152 views
0

我已經搜索所有網站上,但沒有找到以下問題的解決方案:Asp.net MVC複合類自定義模型綁定

說我有三個視圖模型類

public class ViewModelNewPerson 
{ 
    public string PersonName; 
    public string Address; 
    public string EyeColor; 
    //etc 
} 

public class ViewModelSelectPerson 
{ 
    public int SelectedPersonId; 
} 

public class ViewModelComposite 
{ 
    public ViewModelSelectPerson selectViewModel; 
    public ViewModelNewPerson newPersonViewModel; 
} 

,我想做下面的事情:

Controller我想創建一個GETAction它使用類ViewModelComposite作爲其獲取模式,並在視圖我希望用戶從以下兩個可用的選擇行動:選擇一個存在的人,並添加一個新人作爲選定的值。

所以我需要在View創建兩個形式,就會有兩個POSTAction S使用ViewModelNewPerson類和ViewModelSelectPerson的Post模型添加到Controller

我的問題是,我該怎麼辦手動擋車型使用自定義的模型綁定綁定可以的Action綜合類ViewModelComposite轉換爲ViewModelNewPerson在創建新的聯繫人的Action,並ViewModelSelectPerson選擇現有人?

編輯:

現在我有分解類ViewModelComposite的想法,並在兩個班每個屬性聲明到複合類,默認模型綁定就可以了,我想。但是,這會降低複合模式,而不是我想要的。

回答

0

您將在表單中使用單個視圖模型,您將擁有一個接收單一視圖模型的發佈操作。

在你的控制器代碼:

public ActionResult GetSomeData(MyCustomViewModel model){ 
     // add the first element 
     var person = Person.Add(model.Person); 
     // update the second object in model, with related/needed ID 
     model.PersonContent.PersonId = person.id; 
     // add in related content 
     var AddedContent = PersonContent.Add(model.PersonContent); 
} 

形式單一,多行動,多表

+0

好吧,我發現我不是複合決策意識,所以我decomposite這一點。感謝您的回答。 – albusshin