2015-12-30 46 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一次。

如果您有任何问题,请让我知道。

相关问题