【问题标题】:ASP.NET MVC and submitting different models to an ActionASP.NET MVC 并将不同的模型提交给 Action
【发布时间】:2012-05-31 05:26:43
【问题描述】:

我有一个场景,我有一个继承自同一个基类 (BaseFilter) 的过滤器列表。这会根据用户的选择以一定的顺序用不同的模板呈现在几个模板中。通过 javascript 获取该数据并通过 ajax 请求将其提交到ActionResult 中的强类型List<IBaseFilter> 的最佳方法是什么。我应该使用模型绑定器吗?如果可以,如何使用IFilters 列表?

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

public FirstFilter : BaseFilter {
  // Has Two Properties
}

public SecondFilter : BaseFilter {
  // Has One Property
}

【问题讨论】:

    标签: ajax asp.net-mvc-3 model


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-20
        • 2013-02-10
        • 1970-01-01
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        相关资源
        最近更新 更多