我見過很多類似的問題,我嘗試了所有可能的答案,但我的問題仍然是相同的。基本上,我有以下ajax電話。參數爲空
var obj = {
Duration: 12000,
Errors: 2
};
var post = $.ajax({
url: APIUrl,
data: JSON.stringify(obj),
type: "POST",
cache: false,
dataType: 'json',
contentType: 'application/json, charset=utf-8'
});
這是我的視圖模型。
public class TargetBasedViewModel
{
public int Duration{ get; set; }
public int Errors{ get; set; }
}
這裏是我的控制器。
[HttpPost]
public HttpResponseMessage Post(TargetBasedViewModel test)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
問題是該參數保持爲空。 我已經使用Fiddler來檢查請求,它看起來很好,所有的屬性都在那裏,我甚至可以檢查JSON對象,並確保我的值實際上被髮送到服務器。我已經閱讀了很多文章,甚至試圖將[ModelBinder]和[FromBody]添加到參數中,但仍然沒有運氣。 我也試圖加入到我的Application_Start()
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings();
任何想法我可能是做錯了?
我假設你的問題是控制器方法正在被調用,它只是一個空參數?你可以看看控制器認爲發佈的數據是什麼樣的。 –
是的,我實際上在控制器的開始處有一個斷點,一切都加載正常,除非我一直在參數中獲得一個空值。我希望能夠「檢查」控制器請求中的內容,但序列化程序或模型聯編程序應該負責創建我定義的類的實例。換句話說,我不知道如何檢查控制器中的其他內容,現在我只使用Fiddler,請求看起來很好。 – And
如果你看看ControllerContext,你可以進入HttpContext並從那裏到HttpRequest。然後您可以查看Form集合或QueryString集合。既然你發佈了,我認爲你的數據應該可以在Form集合中找到,但由於你沒有使用序列化表單,我不確定會傳達什麼。 –