我需要帮助,我试图设置" display:none"进入"显示:块"在我的div标签中,它位于内容页面中。 当我执行下面的代码时,HtmlGenericControl类继续给出错误"对象引用未设置为对象的实例"因为他无法找到" 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");
}
后面的代码中的注释部分是我尝试的另一个返回相同的东西(Null)。
答案 0 :(得分:2)
你能在下面试试吗,
protected void lbtnRegister_Click(object sender, EventArgs e)
{
HtmlGenericControl myObject = ContentPlaceHolder1.FindControl("divSignin") as HtmlGenericControl;
}
答案 1 :(得分:1)
如果click事件的处理程序位于MasterPage上,则应使用:
HtmlGenericControl control = this.FindControl("MainContent").FindControl("divSignin") as HtmlGenericControl
如果处理程序位于Page的代码隐藏中,那么你的解决方案就会正常工作。但在这种情况下,你也可以得到这样的控制:
HtmlGenericControl control = this.divSignin;
答案 2 :(得分:1)
所以我找到了问题的答案。我的代码是正确的,后面的代码确实没有错。 只有我创建了一个新的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中有一个类会导致我的问题。 谢谢你的回复。我感谢您的努力和时间