使用ASP.NET CORE MVC在行动中使用继承的最简单方法是什么?
例如,我有3个班级:
public class Common
{
public string CommonField { get; set; }
}
public class A : Common
{
public string FieldA { get; set; }
}
public class B : Common
{
public string FieldB { get; set; }
}
我有控制器动作
IActionResult Post([FromBody] [ModelBinder(BinderType = typeof(MyCustomeBinder))] Common field)
{
//process field here
}
在绑定之前替换field
初始化(基于某些查询参数(例如,type=a
))的最佳方法是什么?
我仍然需要从身体填充所有属性。
我已经有类似的东西:
public class MyCustomBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
switch (bindingContext.HttpContext.Request.Headers["type"])
{
case "a":
bindingContext.Result = ModelBindingResult.Success(new A());
break;
case "b":
bindingContext.Result = ModelBindingResult.Success(new B());
break;
default:
}
return TaskCache.CompletedTask;
}
}
这是正确的对象,但所有字段都是空的。