2010-06-01 107 views
3

ASP.NET MVC是否提供了任何簡單的方法來讓模型綁定在您從其他模型類繼承的模型類中工作?模型綁定和派生模型類

在我的場景中,我有一個強類型爲List<Person>的視圖。

我有幾個類繼承Person,即PersonTypeOnePersonTypeTwo

我有三個強類型局部視圖,名稱與這些類名稱匹配(併爲各自模型的屬性渲染表單元素)。

這意味着,在我的主視圖,我可以有下面的代碼:

<% for(int i = 0; i < Model.Count; i++) 
    { 
     Html.RenderPartial(Model[i].GetType().Name, Model[i]); 
    } %> 

這種運作良好,除了當用戶提交表單相關的控制器的操作方法只是得到了List<Person>,而不是列表Person,PersonTypeOnePersonTypeTwo

這與預期非常相似,因爲表單提交沒有足夠的信息來指示默認模型聯編程序創建PersonTypeOnePersonTypeTwo類的任何實例。

那麼,有沒有什麼辦法從默認模型聯編程序獲得這樣的功能?

回答

4

您應該創建單獨的模型來綁定您的輸入。您的ViewModels和EditModels是真正獨特的責任,因此應該擁有自己的對象。

+0

你是說接受表單POST的動作方法應該接受一個與強類型視圖完全不同的類型的參數嗎? – 2010-06-01 17:36:44

+2

是的,那絕對是我說的。如果你仔細想想,用於渲染的ViewModel將具有下拉查找值,可能是專門爲渲染而設計的文本,以及其他所有可能的東西。您的動作所採用的模型實際上只應具有要綁定的確切屬性以及任何相關的驗證。 – 2010-06-01 18:36:56