2014-12-02 116 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); 
} 

希望這有助於。