2009-03-11 5 views
3

Ich habe eine ASPX-Seite mit einem Login-Steuerelement mit benutzerdefinierten Authentifizierung. Ich habe mich gefragt, ob es möglich ist, eine "Welcome [FirstName] [LastName]" -Nachricht mit dem LoginName-Steuerelement anstelle des [UserName] zu haben, auf das standardmäßig zugegriffen wird.Vollständigen Namen in ASP.NET LoginName-Steuerelement anzeigen

Ich denke darüber nach, diese Informationen im Session-Objekt zu speichern, wenn es nicht möglich ist.

Danke!

Antwort

2

Sie müssen die Methode RenderContents überschreiben oder Ihr eigenes LoginName-Steuerelement erstellen. So etwas wie dies tun, den Trick:

protected override void RenderContents(HtmlTextWriter writer) 
{ 
     if (string.IsNullOrEmpty(Profile.FullName)) 
      return; 

     nameToDisplay = HttpUtility.HtmlEncode(Profile.FullName); 
     string formatExpression = this.FormatString; 
     if (formatExpression .Length == 0) 
     { 
      writer.Write(nameToDisplay); 
     } 
     else 
     { 
      try 
      { 
        writer.Write(string.Format(CultureInfo.CurrentCulture, formatExpression, new object[1] { nameToDisplay }); 
      } 
      catch (FormatException exception) 
      { 
        throw new FormatException("Invalid FormatString", exception1); 
      } 
     } 
} 

Auch finden Sie hier für einen kurzen Artikel über working with LoginName.

+0

Ich verwende nicht die Standard-ASP.NET-Provider und nicht auch Profil verwenden. Ich beschloss, den vollen Namen des Benutzers stattdessen im Sitzungsobjekt zu speichern. Vielen Dank! –

0

Sie können die FormatString -Eigenschaft verwenden, um die Willkommensnachricht auf eine beliebige Zeichenfolge festzulegen. In Kombination mit Ausdruckserstellern (z. B. <%$ expressionPrefix: expressionValue %>) hätten Sie eine flexible Möglichkeit, die Ausgabe zu definieren.

2

Erstellen Sie ein LoginName-Steuerelement in Redirect-Seite es kann Masterpage.aspx oder eine andere Seite sein.

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

dann diese Codezeile einzufügen innerhalb der page_load in CS-Datei

protected void Page_Load(object sender, EventArgs e) 
{ 
    //this can come from anywhere like session, database 
    string fullName = "ABC XYZ"; 
    LoginName1.FormatString = "welcome" + " - " + fullName ; //output: welcome - ABC XYZ 

    or 

    LoginName1.FormatString = fullName; // output: ABC XYZ 
} 

ist dies hilfreich für Sie ???

Verwandte Themen