参数字典包含参数Exception的空条目

时间:2017-01-04 13:15:48

标签: javascript c# asp.net asp.net-mvc

我有这个JS:

if (typeof window.bankSelector !== 'undefined') {
    if (window.bankSelector.val() <= 0)
        window.branchSelector.prop("disabled", true);
    else {
        var bankId = window.Selector.val();
        $.getJSON(window.baseUrl + "/asyncapi/MyFunc", { bankId: bankId},
               function (data) {
                   window.branchSelector.empty();
                   window.branchSelector.append($('<option/>', {
                       value: 0,
                       text: '- nothing -'
                   }));
                   $.when($.each(data, function (index, item) {
                       window.branchSelector.append($('<option/>', {
                           value: item.Value,
                           text: item.Text
                       }));
                   })).then(function () {
                       window.branchSelector.select{
                           minimumResultsForSearch: 10
                       });
                       if (window.branchId > 0)
                           window.branchId.select('val', window.branchId);
                   });
               });
    }

我有这个C#代码:

    [AcceptVerbs(HttpVerbs.Get)]
    public async Task<JsonResult> MyFunc(int bankId)
    {
        var branchlist=
            await _db.Branches.AsNoTracking()
                .Where(
                    m =>
                        m.Companies.Any(y => y.CompanyId== ((CustomPrincipal)User).CompanyId) &&
                        m.Bank.BankId == bankId).Select(m => new
                        {
                            m.BranchName
                        }).ToListAsync();

        var son = await Task.Run(() =>
        {
            var branches = branchlist.OrderBy(m => m.branchname).Select(m => new SelectListItem
            {
                Text = m.branchName+ @" - " + m.SubeKodu,
                Value = m.BranchId.ToString(CultureInfo.CurrentCulture)
            });
            return branches;
        });
        return Json(son, JsonRequestBehavior.AllowGet);
    }

我明白了:

  

参数字典包含参数'bankid'的空条目   非可空类型'System.Int32'的方法   “System.Threading.Tasks.Task`1 [System.Web.Mvc.JsonResult]   'MySolution.Controllers.AsyncApiController'中的MyFunc(Int32)'。一个   可选参数必须是引用类型,可空类型或be   声明为可选参数。参数名称:参数

我真的迷失在这个错误中。我不知道该怎么办。你能帮我么?感谢。

1 个答案:

答案 0 :(得分:4)

您的c#方法未收到bankId参数,因此默认使用null,这与预期类型int(不可为空)不兼容。

这似乎是因为你在这一行中放了bankID而不是bankId

$.getJSON(window.baseUrl + "/asyncapi/MyFunc", { bankID: bankId},
                                                 ^^^^^^

更新

此行也有拼写错误:

var bankaId = window.Selector.val();
        ^

另一个主角:您确定此变量不会将null作为值吗?