2013-03-15 2 views
2

Почему этот код бросает NullReferenceException?ошибка строки запроса

Исключение:

System.NullReferenceException: Object reference not set to an instance of an object.

Код:

if ((string.IsNullOrEmpty(Request.QueryString["Sno"].ToString())) 
    && (string.IsNullOrEmpty(Request.QueryString["Name"].ToString()))) 
{ 
    lblBookedBy.Text = ""; 
    lblSno.Text = ""; 
} 
else 
{ 
    lblBookedBy.Text = Request.QueryString["Name"].ToString(); 
    lblSno.Text = Request.QueryString["Sno"].ToString(); 
} 
+0

Вы проверили мой ответ? – Arshad

+1

ans остальные люди, которые здесь отвечают, не в порядке! ????? – TalentTuner

ответ

-1

Использование Convert.ToString() вместо .ToString(), чтобы избежать нулевой ссылочный исключение:

if (string.IsNullOrEmpty(Convert.ToString(Request.QueryString["Sno"])) && string.IsNullOrEmpty(Covert.ToString(Request.QueryString["Name"]))) 
{ 
    lblBookedBy.Text = ""; 
    lblSno.Text = ""; 
} 
else 
{ 
    lblBookedBy.Text =Convert.ToString(Request.QueryString["Name"]); 
    lblSno.Text =Convert.ToString(Request.QueryString["Sno"]); 
} 
+0

Вы отменили мои изменения и сами сделали то же самое? Я не был тем, кто отклонил изменения на моем посту. ;) – eandersson

1

Вы пытаетесь бросить Request.QueryString["Sno"] в строку, а это значение null

1

Это, скорее всего, б иначе в строке запроса коллекции нет ключа «Sno» или «Name», что приводит к исключению при попытке вызвать .ToString() на нем.

Проверьте Request.QueryString [ "Сно"] или Request.QueryString [ "Name"] является нулем, перед вызовом .ToString()

+0

Да, я знаю, что они ноль, но после этого часть else должна работать. Почему ошибка? – Gaurav

+0

@Gaurav можно преобразовать null в строку? – TalentTuner

+0

Оператор if проверяет, что они оба являются нулевыми (или пустыми). Если только один из них является нулевым, вы увидите эту ошибку. Вместо этого используйте или в вашем случае. –

1

если Request.QueryString["Sno"] или Request.QueryString["Name"] не возвращает какой-либо объект, чем вызов ToString выбросит исключение,

1

Удалить .ToString() в нуль проверки, потому что, когда параметр строки запроса не доступен вы пытаетесь ввести переменную пустого значения в строку ....

if ((string.IsNullOrEmpty(Convert.ToString(Request.QueryString["Sno"]))) && (string.IsNullOrEmpty(Covert.ToString(Request.QueryString["Name"])))) 
2

Я бы порекомендовал сделать следующее.

if (Request.QueryString["Sno"] == null || Request.QueryString["Name"] == null) 
{ 
    lblBookedBy.Text = ""; 
    lblSno.Text = ""; 
} 
else 
{ 
    lblBookedBy.Text = Request.QueryString["Name"].ToString(); 
    lblSno.Text = Request.QueryString["Sno"].ToString(); 
} 

Вы, скорее всего, получить NullReference в if заявлении. Таким образом, вы обязательно не столкнетесь с этим, а худший случай, если обе переменные будут созданы, но одна или несколько из них содержат пустую строку, она просто установит Text в empty.

Альтернативно, если вы используете Convert.ToString, как и многие другие, вы можете упростить код, пропустив инструкцию if.

lblBookedBy.Text = Convert.ToString(Request.QueryString["Name"]); 
lblSno.Text = Convert.ToString(Request.QueryString["Sno"]); 

В худшем случае один из них будет Null, и приведет к одному из TextBoxes, чтобы показать результат, в то время как другая пустая.

Кроме того, при условии, что Request.QueryString поддерживает его, вы можете использовать TryGetValue.

+0

он выдает исключение, если '[" Sno "]' и '[" Name "]' будет null. – Arshad

+0

Я не вижу, как один из них может быть пустым. Я не делаю 'ToString' в' '' '' ''. – eandersson

+0

Я отредактировал ваш ответ, если я не ошибаюсь – Arshad

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

  • Нет связанных вопросов^_^