0

我有一个场景,我有一个从同一个基类 ( BaseFilter) 继承的过滤器列表。这会根据用户的选择以一定的顺序用不同的模板呈现在几个模板中。通过 javascript 获取该数据并通过 ajax 请求将其提交给强类型List<IBaseFilter>ActionResult. 我应该使用模型活页夹,如果是的话,如何使用列表IFilters

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

public FirstFilter : BaseFilter {
  // Has Two Properties
}

public SecondFilter : BaseFilter {
  // Has One Property
}
4

2 回答 2

0

基本上,Binders 获取 FormCollection 中的内容,并将它们转换为适合您的模型对象。您可能可以创建一个自定义的活页夹(IModelBinder 实现)来为您完成所有这些工作。请参阅这篇文章以了解它们的工作原理。

于 2012-05-31T05:47:24.570 回答
0

从子级转换为父级意味着您丢失了所有子级属性,而您只能获得父级属性。如果您对绑定过滤器建模,IFilter那么您只能使用现有的属性IFilter。我建议您创建两个操作方法,并尽可能连续保存过滤器,并在这些操作中使用强类型模型绑定。另一种选择可能是将数据发送到操作方法,但手动从 HTTP 请求中提取信息,而不是让 ASP.NET MVC 将传入参数绑定到您的List<IFilter>参数。

于 2012-05-31T05:32:39.423 回答