Ajax ASP.NET MVC和将不同的模型提交到操作

Ajax ASP.NET MVC和将不同的模型提交到操作,ajax,asp.net-mvc-3,model,Ajax,Asp.net Mvc 3,Model,我有一个场景,其中我有一个从相同基类继承的筛选器列表(BaseFilter)。根据用户的选择,以一定的顺序使用不同的模板以几个形式呈现。通过javascript获取数据并通过ajax请求将其提交到ActionResult中的强类型列表的最佳方式是什么。我应该使用模型活页夹吗?如果是,如何使用I过滤器列表 public ActionResult Save(List<IFilter> filters) { } public FirstFilter : BaseFilter { //

我有一个场景,其中我有一个从相同基类继承的筛选器列表(
BaseFilter
)。根据用户的选择,以一定的顺序使用不同的模板以几个形式呈现。通过javascript获取数据并通过ajax请求将其提交到
ActionResult
中的强类型
列表
的最佳方式是什么。我应该使用模型活页夹吗?如果是,如何使用
I过滤器列表

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

public FirstFilter : BaseFilter {
  // Has Two Properties
}

public SecondFilter : BaseFilter {
  // Has One Property
}
public ActionResult保存(列表过滤器)
{
}
公共FirstFilter:BaseFilter{
//有两个属性
}
公共SecondFilter:BaseFilter{
//有一个属性
}

从子属性强制转换到父属性意味着您失去了所有子属性,而只获得父属性。如果将过滤器模型绑定到
IFilter
,则只有
IFilter
中存在的属性才可用。我建议您创建两个操作方法,并在可能的情况下连续保存筛选器,并在这些操作中使用强类型模型绑定。另一种选择可能是向action方法发送数据,但手动从HTTP请求中提取信息,而不是让ASP.NET MVC将传入参数绑定到
列表
参数。

基本上,绑定器会获取FormCollection中的内容,并为您将其转换为漂亮的模型对象。您可能可以创建一个定制的活页夹(IModelBinder实现)来为您完成所有这些。看看他们是如何工作的