WebApi方法无法绑定到模型

时间:2014-03-15 23:39:59

标签: asp.net-mvc-4 asp.net-web-api http-post

基本上我试图在我的webapi控制器中创建一个方法:

方法如下(方法体相关):

[HttpPost]
public HttpResponseMessage CpaLead([FromBody]CpaLeadVM model)
{

这里是传递对象的类声明:

public class CpaLeadVM
{
    public string UserIp = "";
    public string UserCountry = "";
    public double Earn = 0.0;
    public string SurveyType = "";
}

事情是;当我向方法发送post请求时,模型始终为null。 帖子请求包含以下数据:

UserIp=hello
Earn=44.4
UserCountry=denmark
SurveyType=free

它是否能够绑定到模型或我在这里遗漏了什么?

2 个答案:

答案 0 :(得分:2)

问题在于"属性"你试图绑定到字段而不是实际属性。 Web Api中的模型绑定器和格式化程序不会查看字段。如果您将模型更改为:

public class CpaLeadVM
{
    public CpaLeadVm()
    {
        UserIp = "";
        UserCountry = "";
        Earn = 0.0;
        SurveyType = "";
    }

    public string UserIp {get;set;}
    public string UserCountry {get;set;}
    public double Earn {get;set;}
    public string SurveyType {get;set;}
}

您的绑定将有效。作为旁注,您的操作的[FromBody]属性是多余的,因为默认情况下非约束值是从请求正文绑定的。

答案 1 :(得分:0)

如您所知,您只能从正文中获取一个值,该值必须以" = value"发送。有关详细信息,请参阅此文章 http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

我不确定,但我认为你可以创建自己的模型绑定器,将身体解析到你的班级。另一种方法是使用JSON。在这里阅读更多相关信息 ASP.NET MVC 4 Post FromBody Not Binding From JSON