HtmlGenericControl 返回 Null

HtmlGenericControl Returning Null

我需要这方面的帮助,我正在尝试将内容页面中我的 div 标记中的 "display:none" 设置为 "display:block"。 当我执行下面的代码时,HtmlGenericControl class 不断给出错误 "Object reference not set to an instance of an object" 因为他找不到 "divSignin" (我的 div 标签的 ID)但它就在那里如代码所示:请帮忙。

我的 HtmlGenericControl 实现有问题吗?

这是我的内容页面中的代码:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="col-md-4" id="divSignin" style="display:none" runat="server">
    </div>
</asp:Content>

这是我母版页中隐藏的代码:

protected void lbtnRegister_Click(object sender, EventArgs e)
{
    HtmlGenericControl myObject = Master.FindControl("ContentPlaceHolder1").FindControl("divSignin") as HtmlGenericControl;

   //HtmlGenericControl myObject;
   // myObject = (HtmlGenericControl)ContentPlaceHolder1.FindControl("divSignin");
   // myObject.Style.Add("display", "block");
}

后面代码中的注释部分是我尝试过的另一件事 returns 同样的事情(空)。

你能试试下面吗,

protected void lbtnRegister_Click(object sender, EventArgs e)
{
    HtmlGenericControl myObject = ContentPlaceHolder1.FindControl("divSignin") as HtmlGenericControl;
}

如果单击事件的处理程序位于母版页上,您应该使用:

HtmlGenericControl control = this.FindControl("MainContent").FindControl("divSignin") as HtmlGenericControl

如果处理程序位于您拥有 div 的页面的代码隐藏中,您的解决方案将有效。但在那种情况下,您也可以像这样获得控件:

HtmlGenericControl control = this.divSignin;

所以我找到了问题的答案。我的代码是正确的,后面的代码真的没有问题。 只是我新建了一个div(请参考下面的html:)

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="col-md-4">
   <div id="someID" runat="server" style="display:block">

   </div>
</div>

这是我在 MasterPage 中隐藏的代码:

protected void lbtnRegister_Click(object sender, EventArgs e)
    {
        HtmlGenericControl myObject = this.FindControl("ContentPlaceHolder1").FindControl("divShow") as HtmlGenericControl;
        myObject.Style.Add("display", "none");
    }

我不确定是什么导致了空引用,但我猜测 div 中的 class 导致了我的问题。 谢谢你们的回复。感谢您的努力和时间