Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从代码到模型的FormCollection_C#_Asp.net Mvc - Fatal编程技术网

C# 从代码到模型的FormCollection

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) {

我正在开发一个ASP.NET web应用程序

在一个视图中,我有一个基本模型(BaseObject),根据组合框的选择,有更多字段包含该对象的特定信息(具有自己的模型类,如SpecificObject1、SpecificObject2等)

要处理控制器操作,我的想法是使用以下代码:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Update(BaseObject model, FormCollection fc)
{
    ...
}
My
BaseObject
具有用于标识特定对象的属性,例如:
model.SubObject类型ID

我的想法是在控制器操作中有一个
开关
,并将
表单集合
转换为特定的模型

是否有一种方法可以自动执行此操作,或者是否需要创建帮助器类来创建特定对象类的实例并设置参数

输入字段的名称与特定对象的属性名称相同

附言:我正试图避免使用AutoMapper。我更喜欢ASP.NET MVC的内置解决方案


感谢您的帮助。

通常在这些情况下,最好构建一个ModelBinder类,该类的任务是为控制器操作创建正确的实例。它解析表单集合并创建要传递给控制器的实例。
这样,控制器更薄,更尊重SRP.:-)

好的,但是我有10多个可能的
SpecificObject
类。我可以创建一个ModelBinder来返回接口的实例吗?因为我所有的
SpecificObjects
都实现了
isSpecificObject
接口。当然,模型绑定器可以返回isSpecificObject。这意味着我必须为我所有的特定对象类实现从FormCollection到特定对象属性的值的“映射”?难道没有一种方法可以自动化吗?没错。也许Automapper可以帮你。