2015-12-30 51 views
0

我有以下代碼,我想驗證,如果輸入的用戶名已存在或沒有。 我檢查了dotNetNuke的內置驗證,但我什麼都不明白。 下面是內置的代碼..在dotnetNuke驗證中檢查唯一的用戶名

UserInfo user = UserController.GetUserByName(PortalId, User.Username); 
if (user != null) 
{ 
    if (PortalSettings.Registration.UseEmailAsUserName) 
    { 
     CreateStatus = UserCreateStatus.DuplicateEmail; 
    } 
    else 
    { 
     CreateStatus = UserCreateStatus.DuplicateUserName; 
     int i = 1; 
     string userName = null; 
     while (user != null) 
     { 
      userName = User.Username + "0" + i.ToString(CultureInfo.InvariantCulture); 
      user = UserController.GetUserByName(PortalId, userName); 
      i++; 
     } 
     User.Username = userName; 
    } 
} 

和我的代碼如下。

public HttpResponseMessage SaveClientDetail(ClientDto dto) 
{ 
    var user = new UserInfo(); 
    UserCreateStatus CreateStatus; 
    user.FirstName = dto.FirstName; 
    user.LastName = dto.LastName; 
    user.Email = dto.Email; 
    user.Username = dto.Email; 
    user.DisplayName = dto.FirstName + " " + dto.LastName; 


    UserController.CreateUser(ref user); 
    return Request.CreateResponse(HttpStatusCode.OK, dto); 
} 

我要在創建對象之前驗證我user.Username。 也請提供有關內置的​​代碼解釋,這讓我快速瞭解這個 回覆..

回答

0

的代碼基本上得到基於「用戶名」一的UserInfo對象,如果對象爲空,你可以假設用戶名沒有按」不存在。

+0

如果我寫下面的代碼** UserInfo user = UserController.GetUserByName(PortalId,User.Username); **比每次用戶來到空時是否是唯一的。 – sadhana

0

根據您的要求,沒有任何DNN方法來驗證單個用戶名。你必須通過對象的UserData像下面,會給你你喜歡的對象DuplicateUserNameDuplicateDisplayNameDuplicateEmail的狀態...等

DotNetNuke.Security.Membership.UserCreateStatus objCreateStatus = 
DotNetNuke.Entities.Users.UserController.CreateUser(ref objUser); 

如果你想檢查重複的用戶名您的UserData對象之前傳遞給CreateUser方法,我建議你在你的類中創建一個返回布爾值true/false的單一方法。您可以編寫如下所示的查詢並獲取現有用戶名的計數數量。如果查詢返回任何Count > 0,那麼方法返回true,否則返回false。

抽樣方法:

public bool validateUsername(string fsUsername) 
{ 
    bool lbFlag = false; 
    int liCount = 0; 
    // query = SELECT COUNT(1) FROM [dbo].[Users] WHERE [Username] = '@Username' 

    // Write C# code to get you count value 

    if(liCount > 0) 
    { 
     lbFlag = true; 
    } 

    return lbFlag; 
} 

調用此方法創建的UserData對象之前後。如果您需要更多關於DNN用戶創建的信息,我至少要求您至read this link一次。

如果您有任何問題,請讓我知道。

相關問題