Asp.net-Mvc-4
ASP.Net Web Api 未在 POST 上綁定模型
我正在嘗試將 JSON 數據發佈到 Web Api 方法,但 JSON 數據未綁定到模型。
這是我的模型:
[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; } }這是我的 Web Api 操作:
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 實例,但所有的屬性值都是空的。 這是我通過 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 屬性?謝謝你的幫助。
您如何創建 JSON 請求?通過 Fiddler 請求生成器?在請求正文中嘗試以下操作。
{ "SiteKey":"qwerty", "UserId": "12345qwerty", "UserName":"john q" }我猜“請求正文:”也是您的請求正文的一部分。刪除它並檢查。
與 OP 的問題無關,但是當我在 Model 類中使用(公共)欄位而不是屬性 (即 no
{get; set;})時,問題的標題將我帶到了這裡。事實證明,這也會導致綁定失敗。也許可以幫助某人。