我正在开发一个ASP.NET Web应用程序。
在一个视图中,我有一个基本模型(BaseObject),并且根据组合框选择,有更多字段具有此对象的特定信息(具有自己的模型类,如SpecificObject1,SpecificObject2,...)。
要处理控制器操作,我的想法是拥有以下代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Update(BaseObject model, FormCollection fc)
{
...
}
我的BaseObject
有一个用于标识特定对象的属性,例如:model.SubObjectTypeId
我的想法是在控制器操作中设置switch
并将FormCollection
“转换”为特定模型。
有没有办法自动执行此操作,还是需要创建辅助类来创建特定对象类的实例并设置参数?
输入字段的名称与属性是特定对象的namend相同。
PS:我正在努力避免使用AutoMapper。我更喜欢ASP.NET MVC的内置解决方案。
感谢您的帮助。
答案 0 :(得分:1)
通常在这些情况下,最好构建一个ModelBinder,该类具有为控制器操作创建正确实例的任务。它解析Form集合并创建要传递给控制器的实例。 这样,控制器更薄,更尊重SRP。 : - )