2011-01-29 21 views
3

好的,我有2種模式,從一個抽象類繼承:C#MVC 2通行證多個對象類型到一個控制器動作

public abstract class Search 
{ 
    [Required] 
    public string Name{get;set;} 
} 

public class PageModelA : Search 
{} 

public class PageModelB : Search 
{} 

搜索頁面是一個局部視圖。

我怎樣才能通過這兩種模式的一個操作方法:

[HttpPost] 
public ActionResult Search(??? search) 
{} 

謝謝!

回答

2

您可以創建一個包含兩個對象的視圖模型。然後只通過適當的型號並在控制器上檢查null

class SearchModel 
{ 
    public PageModelA { get; set; } 
    public PageModelB { get; set; } 
} 

[HttpPost] 
public ActionResult Search(SearchModel search) 
{ 
    if (SearchModel.PageModelA != null) 
    { 
     //Do something with PageModelA 
    } 
    else 
    { 
     //Do something with PageModelB 
    } 
} 
+0

非常好,謝謝! – Cyberdrew 2011-01-29 16:40:09

0

這裏的另一種選擇是,檢查型

[HttpPost] 
public ActionResult Search(Search search) 
{  
if ((search) is PageModelA)  
{   
    //Do something with PageModelA  
}  
else if ((search) is PageModelB)  
{   
    //Do something with PageModelB  
} 
} 
相關問題