我在ASP.NET MVC 4 RC Web API中看到我認爲是一個奇怪的綁定問題。我有一個方法來接受來自客戶的請求。問題是,當post方法被調用時,沒有任何參數是綁定的,我到了我的break line和name,email都是null。如果我在JavaScript中將請求的類型更改爲GET,那麼下面的Get函數被綁定的參數調用。ASP.NET MVC 4 RC Web API參數綁定問題
爲什麼參數無法爲Post方法綁定,我該如何解決這個問題?
send: function(evt) {
evt.preventDefault();
$.ajax({
url: '/api/person',
data: this.model.toJSON(),
type: "POST",
dataType: "json",
success: function(data) {
console.log("Success");
},
error: function(data) {
console.log("Error");
}
});
}
以下是控制器操作:
public void Get(string name, string email) {
throw new NotImplementedException();
}
public void Post(string name, string email) {
throw new NotImplementedException();
}
注:
- 我使用所有的ASP.NET MVC 4 RC的Web API的默認值(所以解串器應該是Json.NET)
- JS調試器上的Chrome網絡選項卡正確顯示錶單數據中的參數。
我的get參數不是void,實際上它不存在。我可能並不清楚,但它只是爲了說明該功能在GET上運行,並不在POST上。 – Cody
好吧 - 那好吧,然後:)。總而言之,如果你從請求的主體中綁定了多個參數,那麼基本上最簡單的事情就是寫一個簡單的模型類型,就像我之前展示的那樣。 –
感謝Mike Stall文章鏈接,它對於發生了什麼非常有幫助。我剛剛假定Web API使用與MVC完全相同的綁定策略。創建一個自定義類來接收參數就像一個魅力,我不是那種解決方案的粉絲,但我不知道爲什麼,所以我可能只是固執。 :)無論如何,這是我將使用的解決方案。謝謝!:) – Cody