2014-12-02 78 views
0

添加一个HtmlGenericControl到母版页我创建一个网站,该网站允许用户登录。成功登录后,用户名应在每个页面上显示,例如,在右上角。主页上有一个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); 
} 

我没有调试一步一步来。没有出现任何错误:没有空或空值,每个变量的创建。但是,用户名完全不显示。有人有想法吗?

回答

0

一个更清洁,更好的方法是将母版页上创建一个公共财产:

public string UserName 
{ 
    get 
    { 
    return Literal1.Text; 
    } 
    set 
    { 
    Literal1.Text = value; 
    } 
} 

就是这样把文字与ID Literal1任何你想要的母版页上:

<asp:Literal runat="server" ID="Literal1" /> 

您已经添加Master指令的强烈打字大师班,所以现在你登录分类,应该是这样的:

protected void Login_LoggedIn(object sender, EventArgs e) 
{ 
    Master.UserName = login.UserName; 
    userNamePlaceHolder.Controls.Add(h3); 
} 

希望这有助于。