C# 从代码到模型的FormCollection
我正在开发一个ASP.NET web应用程序 在一个视图中,我有一个基本模型(BaseObject),根据组合框的选择,有更多字段包含该对象的特定信息(具有自己的模型类,如SpecificObject1、SpecificObject2等) 要处理控制器操作,我的想法是使用以下代码:C# 从代码到模型的FormCollection,c#,asp.net-mvc,C#,Asp.net Mvc,我正在开发一个ASP.NET web应用程序 在一个视图中,我有一个基本模型(BaseObject),根据组合框的选择,有更多字段包含该对象的特定信息(具有自己的模型类,如SpecificObject1、SpecificObject2等) 要处理控制器操作,我的想法是使用以下代码: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Update(BaseObject model, FormCollection fc) {
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Update(BaseObject model, FormCollection fc)
{
...
}
MyBaseObject
具有用于标识特定对象的属性,例如:model.SubObject类型ID
我的想法是在控制器操作中有一个开关
,并将表单集合
转换为特定的模型
是否有一种方法可以自动执行此操作,或者是否需要创建帮助器类来创建特定对象类的实例并设置参数
输入字段的名称与特定对象的属性名称相同
附言:我正试图避免使用AutoMapper。我更喜欢ASP.NET MVC的内置解决方案
感谢您的帮助。通常在这些情况下,最好构建一个ModelBinder类,该类的任务是为控制器操作创建正确的实例。它解析表单集合并创建要传递给控制器的实例。
这样,控制器更薄,更尊重SRP.:-) 好的,但是我有10多个可能的
SpecificObject
类。我可以创建一个ModelBinder来返回接口的实例吗?因为我所有的SpecificObjects
都实现了isSpecificObject
接口。当然,模型绑定器可以返回isSpecificObject。这意味着我必须为我所有的特定对象类实现从FormCollection到特定对象属性的值的“映射”?难道没有一种方法可以自动化吗?没错。也许Automapper可以帮你。