我從URL獲取用戶名blah.com/kevinuk。Membership.GetUser(用戶名) - 如何返回正確的框?
我想在頁面上的一些內容說KevinUK這是什麼存儲在會員表,但是當我這樣做時,它返回相同的外殼什麼的輸入了。
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
如何使用小寫的用戶名作爲參數,並使用正確的外殼從數據庫返回值?
我從URL獲取用戶名blah.com/kevinuk。Membership.GetUser(用戶名) - 如何返回正確的框?
我想在頁面上的一些內容說KevinUK這是什麼存儲在會員表,但是當我這樣做時,它返回相同的外殼什麼的輸入了。
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
如何使用小寫的用戶名作爲參數,並使用正確的外殼從數據庫返回值?
目前尚不清楚,你所使用的會員供應商,但你可以很容易地從下降並重寫的getUser方法。
創建一個類的MembershipProvider類繼承的類。
public class MyMembershipProvider : MembershipProvider
{
public MyMembershipProvider()
{
//
// TODO: Add constructor logic here
//
}
}
重寫getUser方法。
public override MembershipUser GetUser(string username, bool userIsOnline)
{
... Logic here to do a case insensitive lookup...
}
最後更新web配置要使用新的供應商:
<system.web>
<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
<providers>
<add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider" connectionStringName="ADConnectionString" ... />
</providers>
</membership>
</system.web>
一些例子:
http://msdn.microsoft.com/en-us/library/ms366730(VS.80).aspx
不幸的是,Membership.GetUser(string username)
方法只是簡單地將MembershipUser
的用戶名設置爲傳遞參數的值。爲了得到正確的外殼,你要麼需要使用Membership.GetUser(object providerUserKey)
,這需要用戶的GUID,或覆蓋前一種方法及其相應的存儲過程返回正確-套管的用戶名。
或者,你可以簡單地補回來到後端調用兩種不同GetUser()
方法,但是這是非常浪費的。
Stumpled對同樣的問題,上述嘗試解決方案=獲得正確的最簡單方法殼體:
var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;