[英]How to add child controls to Label control?
我正在ASP.NET网页上制作WebForms用户控件。 它应该根据登录或注销的用户来更改其内容。 单击登录表单的“提交”按钮后,该问题会在回发时发生。 LoggedInLabel
的Visible
属性设置为true,并且标签的<span>
标签显示在生成的HTML中,但是标签之间没有任何内容-没有子控件标记,也没有文本。
从LogInControl.ascx
:
<asp:Label ID="LoggedInLabel" runat="server">
Logged in as: <asp:Label ID="UserLoggedInName" runat="server" />
- <asp:HyperLink ID="LogOutLink" runat="server">Log out</asp:HyperLink>
</asp:Label>
从LogInControl.ascx.cs
:
protected void LogInButton_Click(object sender, EventArgs e)
{
//(...)
bool isUserLoggedIn = AuthHelper.isUserLoggedIn(Session);
LoggedInLabel.Visible = isUserLoggedIn;
LoggedOutLabel.Visible = !isUserLoggedIn;
if (isUserLoggedIn)
{
UserLoggedInName.Text = AuthHelper.getUserLoggedIn(Session).ToString();
}
//(...)
}
从生成的HTML代码中(在LogInButton_Click
处理程序之后):
<span id="LogInControl1_LoggedInLabel"></span>
使用调试器,我确认分别为LoggedInLabel.Visible
和LoggedOutLabel.Visible
分配了true
和false
。 我不明白为什么LoggedInLabel
的内容没有出现在HTML代码中。 重新加载页面解决了该问题,即内容更改为:
<span id="LogInControl1_LoggedInLabel">
Logged in as: <span id="LogInControl1_UserLoggedInName">login (Fname Lname)</span>
- <a id="LogInControl1_LogOutLink">Log out</a></span>
我真的为此付出了很多,因此,我非常感谢您的帮助!
很难看到页面的其余代码,很难说,但我认为这是因为您有嵌套标签,而外部标签直到页面显示后才会刷新。
请记住,Label用作关联输入框(例如文本框或下拉菜单)的文本,因此此处未真正正确使用它。
尝试删除外部标签,将内部标签更改为Literal,然后将功能修改为如下所示:
<asp:Panel ID="LoggedInPanel" runat="server" visible="False">
<asp:Literal ID="UserLoggedInName" runat="server" />
- <asp:HyperLink ID="LogOutLink" runat="server">Log out</asp:HyperLink>
</asp:Label>
和
LoggedInPanel.Visible = isUserLoggedIn;
if (isUserLoggedIn)
{
UserLoggedInName.Text = String.Format("Logged in as: {0}",AuthHelper.getUserLoggedIn(Session).ToString());
// Set the logout URL here.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.