我有一个链接转到控制器,该控制器呈现包含此javascript的页面。
$(document).ready(function () {
var creditCards = '<%:(ViewData["CreditCards"])%>';
alert(creditCards);
if (creditCards != null) {
var CreditCardViewData = '<%:((SelectList)ViewData["CreditCards"]).Count() %>';
....
我正在测试的情况是viewData creditCards 为null。我调试它并进入var creditCards = '<%:(ViewData["CreditCards"])%>';
行,当我点击它进入它时,它一直跳到var CreditCardViewData = '<%:((SelectList)ViewData["CreditCards"]).Count() %>';
。 (注意:当ViewData CreditCards不为空时,此页面正常工作)
跳转后,它立即给出错误:“argumentnullexception:Value不能为null。 参数名称:source。“
如何防止出现此错误。谢谢
答案 0 :(得分:4)
尝试将代码更改为以下代码,以确保仅在ViewData [“CreditCards”]不为空时调用Count()。
var CreditCardViewData = '<%:((ViewData["CreditCards"]) != null) ? ((SelectList)ViewData["CreditCards"]).Count() : 0 %>'
Count()方法检查null的参数,如果检测到无效(null)参数,则抛出ArgumentNullException。