ASP.NET MVC API模型未解析

ASP.NET MVC API模型未解析,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,在ASP.NET MVC API中解析模型时遇到一些问题 这是我的API控制器: public class UserController : ApiController { // Hent liste af personer public IEnumerable<UserModel> Get() { return new UserModel[] { new UserModel(), new UserModel() }; } /

在ASP.NET MVC API中解析模型时遇到一些问题

这是我的API控制器:

public class UserController : ApiController
{
    // Hent liste af personer
    public IEnumerable<UserModel> Get()
    {
        return new UserModel[] { new UserModel(), new UserModel() };
    }

    // Hente enkelt person
    public UserModel Get(int id)
    {
        return new UserModel();
    }

    // Opret person
    [ValidationActionFilter]
    public CreateUserRespose Post([FromBody]UserModel model)
    {
        CreateUserRespose rs = new CreateUserRespose();
        return rs;
    }

    // Rediger person
    public UserModel Put(int id, [FromBody]UserModel model)
    {
        return new UserModel();
    }

    // Slet person
    public UserModel Delete(int id)
    {
        return new UserModel();
    }
}
当我用下面的身体把Fiddler叫到指挥所的时候

FirstName=Fistname MiddleName&LastName=SomeName&Email=email@email.us&MatrikelId=1234
将调用操作Post,但模型为null,ModelState.IsValid为true,如果我不发送正文数据,也会发生同样的情况! 我做错了什么

更新: 我尝试将数据作为json发送 小提琴手:


但是当模型为空时,模型状态是否应该无效?

ASP.NET Web API正在使用内容协商过程来决定使用哪个
MediaTypeFormatter
来反序列化请求主体。对于典型的POST请求,它将检查
接受
内容类型
标题。如果不存在,它将使用列表中的第一个
MediaTypeFormatter
(默认为
JsonMediaTypeFormatter

在您的情况下,Web API无法确定正确的
MediaTypeFormatter
。向请求中添加值为
application/x-www-form-urlencoded
内容类型
标题应该可以解决此问题

如果您想了解有关ASP.NET Web API中格式化程序、模型绑定和内容协商的更多详细信息,我建议您阅读以下内容:

  • (如果您对学习ASP.NET Web API感兴趣,应该仔细阅读整本书)

您请求中的
内容类型
标题值是什么?我没有在fiddler中设置标题,标题如下“用户代理:fiddler主机:localhost:51268内容长度:79”请尝试删除parameters@Aviatrix我试过了,在这种情况下不起作用。请将其设置为
application/x-www-form-urlencoded
,这样可以解决问题。如果您确认这是您的问题,我将在回答中详细描述。
FirstName=Fistname MiddleName&LastName=SomeName&Email=email@email.us&MatrikelId=1234
User-Agent: Fiddler
Host: localhost:51268
Content-Length: 102
Content-type: application/json

{"FristName":"Kasper asdasd","LastName":"asdasdasd","Email":"asdaasd@asdasd.us","MatrikelId":"132456asd"}