我正在创建一个允许用户登录的网站。成功登录后,应在每个页面上显示用户名,例如,在右上角。我在Master Page上有一个ContentPlaceHolder。然后会创建一个h3标记并将其添加到此ContentPlaceHolder中。
母版页:
<asp:ContentPlaceHolder runat="server" ID="UserNamePlaceHolder">
</asp:ContentPlaceHolder>
登录页面:
<%@ MasterType VirtualPath="~/Master" %>
登录类:
protected void Login_LoggedIn(object sender, EventArgs e)
{
ContentPlaceHolder userNamePlaceHolder =
(ContentPlaceHolder)Master.FindControl("UserNamePlaceHolder");
var h3 = new HtmlGenericControl("h3");
h3.InnerHtml = login.UserName;
userNamePlaceHolder.Controls.Add(h3);
}
我一步一步做了调试。没有出错:没有null或空值,每个变量都被创建。但是,根本没有显示用户名。有没有人有想法?
答案 0 :(得分:0)
更清晰,更好的方法是在母版页面上创建公共属性:
public string UserName
{
get
{
return Literal1.Text;
}
set
{
Literal1.Text = value;
}
}
它将标识Literal1
的文字放在母版页上的任何位置:
<asp:Literal runat="server" ID="Literal1" />
您已经为强类型Master类添加了Master指令,所以现在您的登录类看起来像这样:
protected void Login_LoggedIn(object sender, EventArgs e)
{
Master.UserName = login.UserName;
userNamePlaceHolder.Controls.Add(h3);
}
希望这有帮助。