【发布时间】:2017-03-20 01:23:35
【问题描述】:
我正在处理我的网站并遇到问题。 我正在从母版页将控件动态添加到内容占位符中。 然后,当我想访问项目时,我找不到它们 Findcontrol 方法,但控件在那里,因为我可以看到它们。
母版页:
<body>
<form id="form1" runat="server">
<header id="master_headline" class="headline">Home Smart Home </header>
<nav>
<ul id="nav_hori" runat="server">
<asp:ContentPlaceHolder ID="master_navigation_hori" runat="server">
</asp:ContentPlaceHolder>
</ul>
</nav>
<nav>
<ul id="nav_vert" runat="server">
<asp:ContentPlaceHolder ID="master_navigation_vert" runat="server">
</asp:ContentPlaceHolder>
</ul>
</nav>
<div id="master_content_div">
<asp:ContentPlaceHolder ID="master_content_body" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
不知何故,正文的结束标签没有显示,但无论如何。
母版页后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] != null)
{
master_navigation_hori.Controls.Add(new LiteralControl(" <li><a href='test.aspx'>" + splitted[1] + "</a></li> "));
//master_navigation_hori.Controls.Add(new LiteralControl("< li class='divider -vertical'></li>"));
master_navigation_hori.Controls.Add(new LiteralControl(" <li><a href='test.aspx'>" + splitted[2] + "</a></li> "));
master_navigation_hori.Controls.Add(new LiteralControl(" <li><a href='test.aspx'>" + splitted[3] + " </a></li> "));
master_navigation_hori.Controls.Add(new LiteralControl("<li class='floatright'><a href='test.aspx'>⚙</a></li>"));
master_navigation_hori.Controls.Add(new LiteralControl("<li class='floatright'><a href='test.aspx'>" + Session["username"] + "</a></li>"));
}
else
{
master_navigation_hori.Controls.Add(new LiteralControl(@"<li class='floatright' id='master_login'>
<a id='master_login-trigger' href='#'>Log in <span>▼</span> </a>
<div id='master_login-content' runat='server'>
<fieldset id='master_inputs'>
<input id='master_input_username' runat='server' type='text' name='username' placeholder='Username' value='test' required='required'/>
<input id='master_input_password' runat='server' type='password' name='password' placeholder='Enter your Password'/>
</fieldset>
<fieldset id='master_actions'>
<input type='submit' id='master_sub_login' runat='server' value='Log in' />
<label><input type='checkbox' id='master_staylogin' runat='server' checked='checked'/> Keep me signed in</label>
</fieldset>
</div>
</li>"));
}
}
后面的内容页面代码:
protected void Page_Unload(object sender, EventArgs e)
{
if (Page.FindControl("master_login-content") != null)
MessageBox.Show("page");
if( Master.FindControl("master_login-content")!=null)
MessageBox.Show("master");
if ((Master.FindControl("master_navigation_hori").FindControl("master_login-content"))!=null)
MessageBox.Show("combi");
if(FindControl("master_login-content")!=null)
MessageBox.Show("nichts");
MessageBox.Show("end");
}
protected void Page_Load(object sender, EventArgs e)
{
if (Page.FindControl("master_login-content") != null)
MessageBox.Show("page");
if( Master.FindControl("master_login-content")!=null)
MessageBox.Show("master");
if ((Master.FindControl("master_navigation_hori").FindControl("master_login-content"))!=null)
MessageBox.Show("combi");
if(FindControl("master_login-content")!=null)
MessageBox.Show("nichts");
MessageBox.Show("end");
}
这在所有地方都返回 null,它只显示“结束”MEssageBox。 它唯一找到的是master_navigation_hori
问候
【问题讨论】: