ASP.Net网页API没有约束力POST模型 [英] ASP.Net Web Api not binding model on POST

查看:169
本文介绍了ASP.Net网页API没有约束力POST模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图JSON数据发布到Web API方法,但JSON数据不具约束力的模型。

I'm trying to POST JSON data to a Web Api method but the JSON data is not binding to the model.

下面是我的模型:

[DataContract]
public class RegisterDataModel
{
    [DataMember(IsRequired = true)]
    public String SiteKey { get; set; }

    [DataMember(IsRequired = true)]
    public String UserId { get; set; }

    [DataMember(IsRequired = true)]
    public String UserName { get; set; }
}

下面是我的网页API动作:

Here's my Web Api action:

    public class RegisterController : ApiController
    {
    public Guid Post([ModelBinder] RegisterDataModel registerDataModel)
    {
        if (!ModelState.IsValid)
        {
            throw new ModelStateApiException(ModelState);
        }
        var userProfileDataContract = userProfileBusinessLibrary.GetNewOne();
        userProfileDataContract.UserId = registerDataModel.UserId;
        userProfileDataContract.UserName = registerDataModel.UserName;

        var userKey = userProfileBusinessLibrary.Register(registerDataModel.SiteKey, userProfileDataContract);

        return userKey;
    }
    }

我添加[ModelBinder的]之前,registerDataModel为空。加入[ModelBinder的]后,registerDataModel是RegisterDataModel实例,但所有的属性值都为空。

Before I added [ModelBinder], registerDataModel was null. After adding [ModelBinder], registerDataModel is a RegisterDataModel instance, but all of the property values are null.

下面是我的请求通过的提琴手:

Here's my Request via Fiddler:

http://local.testwebsite.com/api/register

Request Headers:
User-Agent: Fiddler
Host: local.testwebsite.com
Content-Length: 89
Content-Type: application/json; charset=utf-8:

Request Body:
{ 
 "SiteKey":"qwerty",
 "UserId": "12345qwerty", 
 "UserName":"john q"
}    

我缺少什么让我的职位数据绑定到RegisterDataModel属性?感谢您的帮助。

What am I missing to make my post data bind to the RegisterDataModel properties? Thanks for your help.

推荐答案

你是如何创建的JSON请求?通过提琴手要求建设者?尝试只是在请求体下面。

How are you creating the JSON request? Through Fiddler request builder? Try just the following in the request body.

{ 
 "SiteKey":"qwerty",
 "UserId": "12345qwerty", 
 "UserName":"john q"
}

我猜请求正文:也是你的请求主体的一部分。删除和检查。

I'm guessing 'Request Body:' is also part of your request body. Remove that and check.

这篇关于ASP.Net网页API没有约束力POST模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆