我有一個簡單的jQuery AJAX方法:MVC3不能結合參數在JSON
var sendData = { personId: "@(Guid.Empty)"};
$.ajax({
type: "POST",
url: "@(Url.Action("Dialog", "Dialog")",
data: sendData;
}).done(function (e) {
$('#dialog').html(e);
window.resizeDialog();
});
在dialogController:
public ActionResult PersonInfo(Guid personId)
{
....
}
jQuery將傳遞一個PERSONID作爲的Guid給控制器,控制器將做它的東西,並返回一個PartialView作爲對話框。
這工作得很好,並正在用很多用戶在一些大項目中使用相當多。
但很少(大約1元10.000次點擊)我得到這個例外,我們的記錄:
22-8-2012 14:17:27 ERROR: The parameters dictionary contains a null entry for parameter 'personId' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult PersonInfo(System.Guid)' in 'Site.Controllers.DialogController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters at System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo)
at System.Web.Mvc.ReflectedActionDescriptor.<>c__DisplayClass1.b__0(ParameterInfo parameterInfo)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.b__14()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.b__14()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
我試過被改變$就法的數據類型,但它並沒有幫助。現在我發現,大多數(不是全部)錯誤來自IE8(90%)。
這裏有什麼可能是錯的,我該如何防止這種情況?對於某些方法,我將所有參數設置爲空,我將在稍後的方法中檢查null,但這不是最優的,因爲請求會失敗。
你使用什麼記錄器?嘗試插入Elmah並捕獲所有請求,以便看到控制器正在接收的內容。 –