C# MVC Web API绑定模型到派生类
我正在研究如何将模型绑定到MVC Web API中的派生类,我遇到的问题是,我认为我已经找到了大约5种方法 我得到的是: 型号->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
- 模型库
- 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个使用包含共享逻辑的私有方法。不要过于复杂:)链接到一个可能有用的类似问题(不是重复的):。你看到这个问题了吗:?它可能会给你一些想法。