2012-08-03 50 views
4

儘管有幾種方法,我仍試圖在LoginView LoggedIn模板中獲取LoginName控件,但代碼仍然無法工作。在LoginView LoggedIn模板中找不到控件

我希望將默認用戶名更改爲客戶名稱。

下面是代碼:

<asp:LoginView ID="LoginView1" runat="server"> 
    <LoggedInTemplate> 


       Hello, <asp:LoginName ID="LoginName1" runat="server"></asp:LoginName> 

       <br /> 

       <div style="text-align: right; margin-right: 5px "> 
       <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutPageUrl="~/Home.aspx" Font-Underline="True" /> 
       </div></div> 
     </LoggedInTemplate> 


    </asp:LoginView> 

在後面的代碼:

protected void Login1_LoggedIn(object sender, EventArgs e) 
    { 

     LoginName loginName = LoginView1.FindControl("LoginName1") as LoginName; 
     Response.Write(loginName.ToString()); //for now I used Response.Write for testing purposes 
    } 
+0

是LoginName1 LoginView的孩子,或顯示LoggedInTemplate的孩子?看起來您可能需要通過LoggedInTemplate才能訪問LoginName1。 – Sam 2012-08-03 14:28:05

+0

我認爲它是LoggedInTemplate的子項。我的代碼就像,接着是,後來它到達LoginName1 – user1529419 2012-08-03 14:31:38

+0

然後它就像你需要通過LoggedInTemplate找到控件,下面@AghilasYakoub似乎已經發布了一個例子。 – Sam 2012-08-03 14:36:04

回答

1

你好,你可以用這個代碼

LoginView1.LoggedInTemplate.FindControl("LoginName1") as LoginName; 
+0

嗨,謝謝你的回覆,我已經嘗試過你的方法,但它給出了這個錯誤對於非靜態字段,方法或屬性'System.Web.UI.WebControls.LoginView.LoggedInTemplate.get'需要對象引用 – user1529419 2012-08-03 14:37:25

+0

對不起,我修改了控件LoginView1的名稱,嘗試使用LoginView1而不是LoginView – 2012-08-03 14:41:05

+1

感謝您的回覆,但現在FindControl語句存在問題,錯誤是:'System.Web.UI.ITemplate'不包含定義爲'FindControl',並且沒有找到接受'System.Web.UI.ITemplate'類型的第一個參數的擴展方法'FindControl'(你是否缺少using指令或程序集引用?) – user1529419 2012-08-03 14:44:59

3

試試這個:

<asp:LoginView ID="LoginView1" runat="server"> 
    <LoggedInTemplate> 
    <asp:Label runat="server" ID="lblUserName" Text="" /> 
    <br /> 
    <div style="text-align: right; margin-right: 5px "> 
    <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutPageUrl="~/Home.aspx" Font-Underline="True" /> 
    </LoggedInTemplate> 
</asp:LoginView> 

和代碼behinde:

if (!Page.IsPostBack) 
    if (this.Page.User.Identity.IsAuthenticated)  
     (this.LoginView1.FindControl("lblUserName") as Label).Text = "Hello, " + this.Page.User.Identity.Name;