asp.net对象引用未设置错误

时间:2011-02-16 11:36:41

标签: asp.net findcontrol

我试图从aspx页面找到标签控件。

Label labelmessageupdate;
          labelmessageupdate = (System.Web.UI.WebControls.Label )FindControl("updateMessage1");

如果我设置labelmessageupdate.Text ="something"

它返回对象引用异常。

并且标签控件在更新面板内可能是问题。

3 个答案:

答案 0 :(得分:0)

检查是否为空。始终检查空条件,以便它不会最终显示对象引用错误。

if (labelmessageupdate != null)
{
     labelmessageupdate.Text ="something"
}

答案 1 :(得分:0)

我认为它无法找到您指定的标签控件

if(FindControl("updateMessage1") is Label)
{
    labelmessageupdate = FindControl("updateMessage1") as Label;
    labelmessageupdate.Text="This shoould work if available";
}

答案 2 :(得分:0)

尝试此操作,您尝试查找的控件可能位于另一个用户控件中。

使用

Label updateMessage = FindChildControl<Label>(base.Page, "updateMessage1");
if (updateMessage!=null) 
{
   updateMessage.Text = "new text";
}

/// <summary>     
/// Similar to Control.FindControl, but recurses through child controls.
/// Assumes that startingControl is NOT the control you are searching for.
/// </summary>
public static T FindChildControl<T>(Control startingControl, string id) where T : Control
{
    T found = null;

    foreach (Control activeControl in startingControl.Controls)
    {
        found = activeControl as T;

        if (found == null || (string.Compare(id, found.ID, true) != 0))
        {
            found = FindChildControl<T>(activeControl, id);
        }

        if (found != null)
        {
            break;
        }
    }

    return found;
}