C#MVC 2将多个对象类型传递给一个控制器操作

时间:2011-01-29 16:22:13

标签: c# asp.net-mvc-2

好的,我有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 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:0)

此处的另一个选项是检查类型

[HttpPost] 
public ActionResult Search(Search search) 
{     
 if ((search) is PageModelA )     
 {         
  //Do something with PageModelA     
 }     
 else  if ((search) is PageModelB )     
 {         
  //Do something with PageModelB     
 } 
} 
相关问题