Ich habe ein praktisches "Benutzersteuerelement" für die Anmeldung auf meiner Website erstellt und es befindet sich im Site-Master.Sitzung, die erstellt wurde, nachdem das Postback aufgetreten ist und das Seitenladeereignis die Sitzung in ASP.NET nicht korrekt verwendet
Das natürliche Verfahren ist, dass der Benutzer die Website anmeldet und er sollte mit einer Willkommensnachricht angekündigt werden, die seinen vollständigen Namen enthält. Der vollständige Name sollte sich natürlich in einer Sitzungsvariablen befinden, die beim Anmelden des Benutzers erstellt wurde.
Es besteht kein Zweifel, dass wir den gewünschten Code im "page_load" -Ereignis platzieren und erwarten, dass der vollständige Name des Benutzers an die richtigen Umstände übergeben wird (hier eine Beschriftung mit dem Namen lblFullName), um die Willkommensnachricht auszudrucken wenn der Login-Button angeklickt wurde, aber der vollständige Name nicht übergeben wird, bis sich der Benutzer erneut auf der Website anmeldet (zum zweiten Mal).
Warum tritt dieses Problem auf?
Sein ein Teil meines Codes:
protected void Page_Load(object sender, EventArgs e) { if (Session["FullName"]==null) { //nothing 2 do. } else { lblFullName.Text = Session["FullName"].ToString(); } }
Ich folgte der Lösung, es funktioniert einwandfrei. Danke vielmals. –
Aber da ich neu in ASP.NET und C# Umgebung bin, konnte ich nicht genau verstehen, was passiert ist. Gibt es einen einfacheren Weg mit dem gleichen Sitzungskonzept? –
Ja, Sie könnten die Sitzungsvariable verwenden. Allerdings wäre es nicht so sauber wie meine Lösung. Die Übergabe des Werts als Funktionsargument ist besser als die Verwendung einer Sitzungsvariablen. Globale Variablen sollten nur verwendet werden, wenn andere Lösungen nicht funktionieren. In jedem Fall könnten Sie: (1) "StringEventArgs" nicht erstellen, (2) "UserLoggedIn (this, new StringEventArgs (fullName))" ersetzen; 'By" Session ["FullName"] = fullName; UserLoggedIn (this, EventArgs.Empty); ', (3) Ersetzen Sie' lblFullName.Text = e.Value; 'durch' lblFullName.Text = (string) Session ["FullName"]; '(und' EventArgs' anstelle von 'StringEventArgs' verwenden). – ConnorsFan