2012-05-31 16 views
0

我有一個場景,我有一個從相同的基類(BaseFilter)繼承過濾器的列表。這是根據用戶選擇的某種順序用幾個不同的模板呈現的。通過javascript獲取數據並通過ajax請求將其提交給ActionResult中強類型List<IBaseFilter>的最佳方法是什麼?我應該使用模型活頁夾嗎?如果有,如何使用IFilters的列表?ASP.NET MVC並提交不同的模型到一個動作

public ActionResult Save(List<IFilter> filters) 
{ 
} 

public FirstFilter : BaseFilter { 
    // Has Two Properties 
} 

public SecondFilter : BaseFilter { 
    // Has One Property 
} 

回答

0

從孩子到家長鑄造意味着你失去所有子屬性,你只能得到父屬性。如果您將綁定篩選器建模爲IFilter,則只有IFilter中的現有屬性可供您使用。我建議您創建兩個操作方法,並在可能的情況下連續保存過濾器,並在這些操作中使用強類型模型綁定。另一種選擇可能是將數據發送到操作方法,但是從HTTP請求手動提取信息,而不是讓ASP.NET MVC將傳入參數綁定到List<IFilter>參數。

0

基本上,Binders獲取FormCollection中的內容,並將它們轉換爲適合您的漂亮模型對象。你可能可以創建一個自定義的綁定器(IModelBinder實現)來爲你做所有這些。請參閱this post瞭解他們如何工作。

相關問題