亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遠程驗證隨機拋出“字典包含空條目”錯誤

遠程驗證隨機拋出“字典包含空條目”錯誤

C#
肥皂起泡泡 2021-07-01 14:11:05
當遠程驗證嘗試檢查數據庫中是否已經存在一個值時,我收到了這個超級煩人的錯誤:參數字典包含“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));

    }

}


查看完整回答
反對 回復 2021-07-11
?
尚方寶劍之說

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 不包含的值替換零。


查看完整回答
反對 回復 2021-07-11
  • 2 回答
  • 0 關注
  • 304 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號