我有这个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 声明为可选参数。参数名称:参数
我真的迷失在这个错误中。我不知道该怎么办。你能帮我么?感谢。
答案 0 :(得分:4)
您的c#方法未收到bankId
参数,因此默认使用null
,这与预期类型int
(不可为空)不兼容。
这似乎是因为你在这一行中放了bankID
而不是bankId
:
$.getJSON(window.baseUrl + "/asyncapi/MyFunc", { bankID: bankId},
^^^^^^
此行也有拼写错误:
var bankaId = window.Selector.val();
^
另一个主角:您确定此变量不会将null
作为值吗?