我的html代码就是这样。
<input type="text" name="Id" value="123"/>
<input type="text" name="Name" value="XYZ"/>
<input type="text" name="Abc.Address" value="ABC,XYZ 700567"/>
<input type="text" name="Abc.Mobile" value="6958743216"/>
类: -
class A
{
public string Id { get; set; }
public string Name { get; set; }
public Abc Abc { get; set; }
}
class Abc
{
public string Address { get; set; }
public string Mobile{ get; set; }
}
通过上述输入,当我调用MVC控制器时,当时的绑定发生。用于以下方法
public ActionResult Post(A x)
x中的值是
x.Id="123"
x.Name="XYZ"
x.Abc.Address="ABC,XYZ 700567"
x.Abc.Mobile="6958743216"
但是,当我在Web API中尝试相同的事情时,它给了我415(不支持的媒体类型(。用于以下方法
public IHttpActionResult Post(A x)
而不是绑定它的是415个状态代码,说明不支持的媒体类型。我知道问这很愚蠢,但是为什么会发生这种情况?如果我想进行与MVC中发生的绑定,我该如何实现?(我不想做这样的事情 -> public IHttpActionResult Post([SomeBinder]A x)
(
是否有实现此目标的方法?
它与请求的Content-Type
有关。
您的WebAPI端点期望您的POST请求具有Content-Type
application/json
。一旦添加了它将被接受。
但是,如果要向控制器发布HTML表单,则不应使用WebAPI。如果必须,则可以序列化表单并使用JavaScript