1
我的MVC 3控制器操作不是反序列化來自AJAX文章的JSON數據。MVC 3與ajax沒有在Model Controller中執行ModelBinding操作
- Fiddler顯示正確傳遞的數據。
- 我把一個斷點放在var x =「ok!」;線,它每次都擊中它。
- 從.ajax()中刪除contentType時,會創建地址對象,但屬性爲空值。
- 通過請求中的contentType,地址對象爲空。
- 我試圖把[DataContract]和[數據成員]我的POCO,沒有什麼區別
- 我試圖使用IModelBinder,但StreamReader的(Request.InputStream).ReadToEnd總是 「」
這裏是jQuery代碼:
$("#home-validate-btn").click(function (event) {
var address =
{
Address: $('#Data_HomeAddress').val(),
City: $('#Data_HomeCity').val(),
State: $('#Data_HomeState').val(),
Zip: $('#Data_HomeZip').val()
};
$.ajax({
url: '/Settings/addressValidate',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: $.toJSON(address),
success: function (info) {
alert('ok!');
}
});
});
這裏的控制器代碼:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult addressValidate(ValidateAddress address)
{
var x = "ok!";
return new JsonResult()
{
Data = (x),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
我的POCO:
public class ValidateAddress
{
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
我的Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new
{
controller = "Home",
action = "Index"
} // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}
這裏從提琴手的數據:
- POST http://localhost.:59872/Settings/addressValidate HTTP /1.1
- x-requested-with:XMLHttpRequest
- Accept-Language:en-us
- Referer:http://localhost.:59872/Settings/Addresses?Length=8
- 接受:application/json,text/javascript,*/*; q = 0.01
- Content-Type:application/json;字符集= UTF-8
- 接受編碼:gzip,放氣
- 的User-Agent:Mozilla的/ 4.0(兼容; MSIE 8.0; Windows NT的6.1; WOW64;三叉戟/ 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; Creative AutoUpdate v1.40.01; msn OptimizedIE8; ENUS)
- 主持人:localhost.:59872
- 的Content-Length:77
- 連接:保持活動
- 雜注:無緩存
- Cookie:__RequestVerificationToken_Lw __ = IBBY7VzoqxMI ....(其他字符串剪切)
- ASP。NET_SessionId = fsjywpn4gqasszgcdgmkqd4p
- { 「地址」: 「大街1號」, 「城市」: 「海灘之城」, 「國家」: 「FL」, 「郵編」: 「99999」}