[英]Unable to call API Post Method that has a class parameter with [FromBody] attribute in asp.net core mvc
[英]Is it possible to use polymorphism in and ASP.NET MVC [FromBody] controller method parameter?
问题标题可能有点难以理解,但我会尽力解释我在这里问的问题。
我在 ASP.NET MVC 控制器中有这种控制器方法:
public IActionResult DoStuff([FromBody] RequestObject reqObj)
{
// do stuff
ReplyObject repObj = ProcessObject(reqObj);
// do more stuff
return Json(repObj);
}
其中 RequestObject 看起来像这样:
public class RequestObject
{
public string Field { get; set; }
}
我从这样的 Angular 服务中调用它:
this.http.post("/StuffController/DoStuff", { field: "field value goes here" })
现在这工作正常。 但是现在我需要 DoStuff() 来处理 RequestObj 的不同子类,例如:
public class RequestObjectA : RequestObject
{
public string FieldA { get; set; }
}
public class RequestObjectB : RequestObject
{
public string FieldB { get; set; }
}
并让 DoStuff() 以某种方式弄清楚它是被赋予了 RequestObjectA 还是 RequestObjectB。
这种事情可能吗? 我有一种感觉,不是因为 JSON 请求只传输对象的内容,而不是它的类,但我想确定。
简短的回答是,这是不可能的。 长答案是:端点参数的约定是RequestObject
类,因此在反序列化期间也不会考虑其他参数成员,因为对它们一无所知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.