2015-07-20 5 views
0

У меня есть класс, который позволяет некоторым свойствам оставаться пустыми (нулевыми) проблемами. Я не знаю, как правильно проверить это и продолжать получать ошибку.Проверьте, имеет ли свойство объекта назначенное значение

Это класс:

public class ZoomListItem 
{ 
    public string image { get; set; } 
    public string text1 { get; set; } 
    public string text2 { get; set; } 
    public ZoomAction action { get; set; } 
} 

и вот как я использую экземпляр:

@foreach (ZoomListItem item in Model.templates) 
{ 
    var actionUrl = (item.action != null) ? "" : "#"; //error here 

инстанциации класса не присваивается значение действия, только текст и изображения даны значения. Я получаю следующее сообщение об ошибке в строке условной:

Исключение типа «System.ArgumentException» произошло в System.Web.Mvc.dll, но не был обработан в пользовательском коде

Дополнительная информация: Значение не может быть пустым или пустым

Я не правильно проверяю с item.action != null?

+4

, и если вы попытаетесь проверить, является ли «элемент» нулевым? Потому что на первый взгляд ваш код кажется правильным. – Dryadwoods

+4

@ Dryadwoods Если бы предмет был NULL, мы бы получили NRE вместо упомянутого. Однако вы уверены, что получите ошибку в этой строке. – HimBromBeere

+1

Возможно ли 'ZoomAction'' 'struct? – LInsoDeTeh

ответ

1

Ваш код должен проверить, является ли item.action пустым, но не проверяет, является ли значение item. В случае, если item имеет значение NULL, то возникает исключение нулевой ссылки. Вы можете:

var actionURL = (item != null && item.action != null) ? "" : "#"; 

Это будет проверять item не является нулевым первым, а затем проверить item.action не является нулевым.

@ Комментарий Luaan выглядит так: он содержит ответ

+0

В следующий раз попробуйте написать свой собственный ответ, а не копировать комментарии других людей ..... – Dryadwoods

+2

Это было мое собственное –

+0

@ Dryadwoods Ну, если бы это было правильным ответом, этот подход, отправляющий это как ответ, был бы абсолютно прекрасным, так как вы этого не сделали. Однако, как уже упоминал Уильям, мы получили NRE, если 'item' равно null, поэтому это НЕ правильный ответ. – HimBromBeere

Смежные вопросы