radtextbox避免对象抛出对象引用未设置为对象的实例

时间:2014-07-26 11:55:09

标签: c# asp.net telerik object-reference radtextbox

这是一个更好的代码,可以避免将Object引用设置为未设置为对象的实例 什么时候使用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 个答案:

答案 0 :(得分:0)

假设 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;
       }           
    }
    

答案 1 :(得分:0)

两个代码示例不一样。

第一个示例不会抛出该异常,除非您在代码中的某处明确设置了Ordername = null,我怀疑您这样做了。

第二个样本会抛出,因为您正试图将RadTextBox投放到TextBox(我假设,因为您正在询问{{1} }),这导致RadTextBoxb

如果您想避免出现空引用异常的可能性,那么在访问控件上的属性之前,您必须检查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