radtextbox избегает бросания объекта. Ссылка на объект не установлена на экземпляр объекта.
Какой код лучше использовать, чтобы не создавать ссылку на объект, не установленную на экземпляр объекта, при использовании Telerik Radtextbox? Оба кода ниже одинаковы? Могу ли я установить значение по умолчанию, чтобы избежать выброса нулевой ссылки?
protected void btnAddSAles_click(object sender, EventArgs e)
{
string orderName = Ordername.Text;
}
или же
protected void btnAddSAles_click(object sender, EventArgs e)
{
TextBox b = item.FindControl("Ordername") as TextBox;
string box1 = b.text;
}
2 ответа
Я предполагаю FindControl
возвращается null
от as
актерский состав, который вы пытаетесь сделать. Я полагаю (опять же) он не находит элемент управления с именем Ordername
следовательно, вы пытаетесь получить доступ к Text
недвижимость на null
объект, который вызывает NullReferenceException
,
Что вы должны сделать, это:
- Проверьте, почему нет имени элемента управления
Ordername
, поскольку я предполагаю, что должен быть один Если контроль, который вызвал
Button.Click
не всегда может бытьTextBox
объект, добавьте проверку недействительности:protected void btnAddSAles_click(object sender, EventArgs e) { TextBox b = item.FindControl("Ordername") as TextBox; if (b != null) { string box1 = b.text; } }
Два примера кода не совпадают.
Первый пример не сгенерирует это исключение, если вы явно не укажете Ordername = null
где-то в вашем коде, что я сомневаюсь, что вы сделали.
Второй образец скинет, потому что вы пытаетесь разыграть RadTextBox
к TextBox
(Я предполагаю, так как вы спрашиваете о RadTextBox
), что приводит к b
являющийся null
,
Если вы хотите избежать возможности исключения нулевой ссылки, то вы должны проверить null
перед доступом к свойствам элемента управления:
protected void btnAddSAles_click(object sender, EventArgs e)
{
TextBox b = item.FindControl("Ordername") as TextBox;
if (b != null)
{
// do something with b.Text;
}
}
Настоящая проблема здесь в том, что вы используете неверный тип. RadTextBox
не происходит от родного TextBox
контроль. Вы должны бросить на RadTextBox
,
protected void btnAddSAles_click(object sender, EventArgs e)
{
RadTextBox b = item.FindControl("Ordername") as RadTextBox;
if (b != null)
{
// do something with b.Text;
}
}