2012-02-08 23 views
0

我正在尋找一種方法來實現MVC 3中的以下內容:MVC 3中的接口的模型綁定3

比方說,我有一個頁面有一個問題。在一個帖子,我想結合以下視圖模型:

public class QuestionElementViewModel 
{ 
    public int QuestionId { get; set; } 
    public string Name { get ; set; } 
    public string Question { get; set; } 
    public string Feedback { get; set; } 
} 

這可以很容易這樣做(如果我使用的查看正確的名稱):

[HttpPost] 
public ActionResult Index(QuestionElementViewModel pm) 
{ 
    //Do something 
} 

現在我有多個我的網頁上有問題。使用該技術解釋在這裏:http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx我也可以使這很容易:

[HttpPost] 
public ActionResult Index(QuestionElementViewModel[] pm) 
{ 
    //Do Something 
} 

但可以說我沒有唯一的問題,但我的頁面,這些元素在不同的元素可以改變。難道是在某種程度上可能實現這樣的事情:

[HttpPost] 
public ActionResult Index(IElementViewModel[] pm) 
{ 
    //Do Something 
} 

,每一個實現此接口視圖模型自動綁定?

我試過這段代碼,它導致一個錯誤:無法創建接口的實例,這聽起來很明顯。

我想我應該創建一個自定義模型粘結劑,但我不是很熟悉,我不想步從標準的MVC框架太多了..

回答

1

您需要此場景的自定義模型綁定器,因爲您正在使用接口並且默認模型綁定器不知道要實例化哪個實現。因此,一種可能的技術是使用包含每個元素的具體類型的隱藏字段。這是an example,可能會讓你走上正軌。

+0

簡直太棒了,正是我所期待的。 – Pbirkoff 2012-02-09 00:01:35