Frage

Ich erhalte den Benutzernamen aus der URL so blah.com/kevinuk.

Ich möchte einige Inhalte auf der Seite KevinUK sagen, die was in der Mitgliedschaft-Tabelle gespeichert ist, aber wenn ich den folgenden Code, es gibt das gleiche Gehäuse wie das, was der Eingang war.

MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;

Wie kann ich einen Kleinbenutzernamen als Parameter verwenden und den Wert aus der Datenbank mit dem richtigen Gehäuse zurückkehren?

War es hilfreich?

Lösung

Es ist nicht klar, welche Mitgliedschaft Anbieter, die Sie verwenden, aber Sie können von diesem und überschreiben die GetUser Methode leicht absteigen.

Erstellen Sie eine Klasse, die Klasse von MembershipProvider Klasse geerbt.

public class MyMembershipProvider : MembershipProvider

{

    public MyMembershipProvider()

    {

        //

        // TODO: Add constructor logic here

        //

    }

}

Überschreiben Sie die getUser Methode.

public override MembershipUser GetUser(string username, bool userIsOnline)

{
 ... Logic here to do a case insensitive lookup...

}

Schließlich den Web-Config aktualisieren Sie Ihren neuen Provider zu verwenden:

<system.web>
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
        <providers>
            <add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider"     connectionStringName="ADConnectionString" ... />
        </providers>
    </membership>
</system.web>

Einige Beispiele:

http: / /www.eggheadcafe.com/tutorials/aspnet/30c3a27d-89ff-4f87-9762-37431805ef81/aspnet-custom-membership.aspx

http://msdn.microsoft.com/ en-us / library / ms366730 (VS.80) aspx

Andere Tipps

Leider setzt die Membership.GetUser(string username) Methode einfach den Benutzernamen des MembershipUser auf den Wert des übergebenen Parameters. Um das richtige Gehäuse zu bekommen, müssen Sie entweder Membership.GetUser(object providerUserKey) verwenden, die die Benutzer-GUID nimmt, oder überschreiben Sie die frühere Methode und ihre jeweilige gespeicherten Prozedur die richtig gefassten Benutzername zurückzukehren.

Oder Sie könnten einfach machen Back-to-Back-Anrufe auf die zwei verschiedenen GetUser() Methoden, aber das ist ziemlich verschwenderisch.

Stumpled auf dem gleichen Problem und versucht obige Lösung = Der einfachste Weg, der richtige Gehäuse bekommen:

var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top