當遠程驗證嘗試檢查數據庫中是否已經存在一個值時,我收到了這個超級煩人的錯誤:參數字典包含“ADVWKSP.Controllers.CRMTItemsController”中方法“System.Web.Mvc.JsonResultDoesGbSNumberExist(Int32)”的不可為空類型“System.Int32”的參數“gbsNumber”的空條目??蛇x參數必須是引用類型、可為空類型或聲明為可選參數。參數名稱:參數at System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo)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.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)它間歇性地發生,我無法找出任何類型的模式 - 這似乎完全是隨機的。它發生在我的兩個字段上,這兩個字段都映射到視圖模型中的整數屬性。它不僅會填滿我的錯誤日志,還會破壞表單,以至于有時提交按鈕不起作用,這很煩人。
2 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
我將參數類型更改為int?并且從那時起就沒有看到錯誤,所以希望問題得到解決,但我們會看到。
更新控制器:
[HttpPost]
public JsonResult DoesGbSNumberExist(int? gbsNumber)
{
using (var db = new ADVWKSPEntities())
{
return (gbsNumber == null) ? Json(false) : Json(!db.CRMTItems.Any(i => i.GbsNumber == gbsNumber));
}
}

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
您的視圖模型將整數值定義為可為空的 int int?
。一個可為空的 int 僅在它包含一個值時才能與一個 int 進行比較。
您的線路:
return Json(!db.CRMTItems.Any(i => i.GbsNumber == gbsNumber));
應該測試為空:
return Json(!db.CRMTItems.Any(i => (i.GbsNumber ?? 0) == gbsNumber));
用 GbsNumber 不包含的值替換零。
- 2 回答
- 0 關注
- 304 瀏覽
添加回答
舉報
0/150
提交
取消