Ошибка JavaScript с Viewdata - PullRequest
2 голосов
/ 14 марта 2011

У меня есть ссылка, которая идет к контроллеру, который отображает страницу, которая включает этот javascript.

$(document).ready(function () {
        var creditCards = '<%:(ViewData["CreditCards"])%>';
        alert(creditCards);
        if (creditCards != null) {
            var CreditCardViewData = '<%:((SelectList)ViewData["CreditCards"]).Count() %>';
            ....

Я тестирую ситуацию, когда viewData creditCards равно нулю. Я отлаживаю его, и он попадает в строку var creditCards = '<%:(ViewData["CreditCards"])%>';, и когда я нажимаю шаг, он переходит к var CreditCardViewData = '<%:((SelectList)ViewData["CreditCards"]).Count() %>';. (Примечание: эта страница работает нормально, когда кредитные карты ViewData не равны нулю)

После того, как он скачет, он немедленно выдает ошибку: "argumentsnullexception: значение не может быть нулевым. Имя параметра: источник. "

Как предотвратить появление этой ошибки. Спасибо

1 Ответ

4 голосов
/ 14 марта 2011

Попробуйте изменить свой код на следующий, чтобы убедиться, что Count () вызывается только в том случае, если ViewData ["CreditCards"] не равно нулю.

var CreditCardViewData = '<%:((ViewData["CreditCards"]) != null) ? ((SelectList)ViewData["CreditCards"]).Count() : 0 %>'

Метод Count () проверяет аргументы на нулевое значение, а затем выдает исключение ArgumentNullException, если обнаруживает недопустимый (нулевой) аргумент.

...