Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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# MVC Web API绑定模型到派生类_C#_Asp.net Mvc_Asp.net Mvc 4_Asp.net Web Api_Model Binding - Fatal编程技术网

C# MVC Web API绑定模型到派生类

C# MVC Web API绑定模型到派生类,c#,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,model-binding,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,Model Binding,我正在研究如何将模型绑定到MVC Web API中的派生类,我遇到的问题是,我认为我已经找到了大约5种方法 我得到的是: 型号-> 模型库 ModelA:ModelBase ModelBase 然后,控制器容器方法: Post(ModelBase model) {} 发布的数据将是ModelA或ModelB,我想将信息添加到HTTP请求元数据中(考虑内容类型:application/json;Type=ModelA),并基于此告诉MVC将发布的内容绑定到A或B 在代码中,我想象如下: Bi

我正在研究如何将模型绑定到MVC Web API中的派生类,我遇到的问题是,我认为我已经找到了大约5种方法

我得到的是:

型号->

  • 模型库
  • ModelA:ModelBase
  • ModelBase
然后,控制器容器方法:

Post(ModelBase model) {}
发布的数据将是ModelA或ModelB,我想将信息添加到HTTP请求元数据中(考虑内容类型:application/json;Type=ModelA),并基于此告诉MVC将发布的内容绑定到A或B

在代码中,我想象如下:

Bind(request, bindingContext)
{
    // check request headers and then...
    bindingContext.ModelType=typeof(ModelA);

    // let the framework continue doing its thing deserializing the content
    base.Bind(request, bindingContext);
}
其他人是怎么做到的?或者你建议怎么做

我见过ParameterBinding、IModelBinder、MediaTypeFormatter等。MVC很棒,但有时很难想到应该使用哪个钩子

编辑:

为了添加更多信息,ModelBase很可能成为一个接口,并且将有数百个具体的类


它将用于CQRS:Command,然后是ConcreteCommandA,ConcreteCommandB,这些将被推送到调度程序,我不想为每个命令做一个操作,一个中心操作来接收这些命令,将它们反序列化为正确的类型并转发它们。

什么值是
Post(ModelBase model)
当您必须将其向下转换为更派生的类型时?为什么不把它分成3种方法呢。1个使用ModelA参数,1个使用ModelB参数,第3个使用包含共享逻辑的私有方法。不要过于复杂:)链接到一个可能有用的类似问题(不是重复的):。你看到这个问题了吗:?它可能会给你一些想法。