如何绑定Web API中的模型(例如在MVC中发生)



我的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

提交表单

最新更新