Ошибка NullReferenceException в ASP.NET с C# — попытка обработать ошибку

У меня есть веб-форма ASP.NET, которая, помимо других элементов управления, имеет текстовое поле для ввода значения, текстовое поле для отображения значений, раскрывающийся список и кнопку поиска. Я использую следующий код для отображения результатов поиска:

if (TextBox3.text == DropDownList3.Items.FindByText(TextBox3.Text).Value) 
{
  etc... 
}

DDL3 получает свои значения из DataTable, и значение, введенное в TextBox3, должно совпадать с одним из значений DDL3 для отображения результатов поиска после нажатия кнопки поиска. Ошибка NullReferenceException возникает, когда значение TextBox3 равно null или не соответствует какому-либо значению в DDL3. Это разумно; однако я потратил несколько часов, пытаясь справиться с этой ошибкой, и я не могу понять, как это сделать. Я попытался добавить дополнительные операторы «Если», такие как «if TextBox3 == null и т. д.», однако безрезультатно. Как мне изменить приведенный выше оператор if, чтобы компенсировать нулевое значение или неправильное значение?

Спасибо,

ДФМ


person Community    schedule 14.05.2009    source источник


Ответы (2)


Попробуйте использовать попытку... поймать это исключение:

try {
    TextBox3.text = DropDownList3.Items.FindByText(TextBox3.Text).Value
} catch (NullReferenceException ex) {
    TextBox3.text = "(none)";
}
person Lloyd    schedule 14.05.2009
comment
Спасибо за ответ - я попробовал вышеуказанное решение; однако я получаю сообщение об ошибке из-за e после исключения NullReferenceException. Я не могу объявить e, так как он используется для моих EventArgs. - person ; 14.05.2009
comment
Хотя я получаю сообщение об ошибке, ваше решение работает; Спасибо. Мне придется выяснить другую ошибку; однако событие срабатывает правильно. - person ; 14.05.2009

вы должны проверить, существует ли элемент в списке, прежде чем проверять его значение.

if (DropDownList3.Items.FindByText(TextBox3.Text) != null)
{
   // ...
}
person Scott Ivey    schedule 14.05.2009
comment
Спасибо за ответ - элемент существует в DDL до оператора if. Я пробовал ваш пример перед публикацией этого вопроса, и код пропускал != и переходил к следующему оператору if, рассматриваемому оператору, который затем выдавал мне ошибку. - person ; 14.05.2009