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,

Что вы должны сделать, это:

  1. Проверьте, почему нет имени элемента управления Ordername, поскольку я предполагаю, что должен быть один
  2. Если контроль, который вызвал 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;
   }
}
Другие вопросы по тегам