会员用户名是大写的?

时间:2013-10-26 08:30:42

标签: c# asp.net

我使用内置的ASP.NET成员资格数据库架构来处理用户和配置文件。我构建了一个自定义配置文件,该配置文件来自 System.Web.Profile.ProfileBase 。在解决方案的某些部分中,数据从数据库中列出并在html表中呈现。在此列表后面的代码中,按当前登录用户的用户名进行过滤。

例:

if (usernameString.Equals(MyCustomProfile.UserName))`  
    // add to list

myRepeater.DataSource = myFilteredList;
myRepeater.DataBind();

这适用于所有浏览器。但在一些经过测试的设备上:iPad,iPhone以及有时在Internet Explorer 8中的列表都是空的。我的第一个想法是JavaScript / HTML / CSS相关的东西引起了这种情况。在调试会话之后,我发现在这些情况下UserName属性的值是大写的。此值来自.NET ProfileBase类,因此没有自定义设置。

我使用内置的 System.Web.Security.Membership 类测试了相同的比较方法。它以大写字母返回用户名。

实施例:

var user = Membership.GetUser();
if (usernameString.Equals(user.UserName))
    // add to list

为了解决这个问题,我一直在覆盖ProfileBase中的UserName属性:

public new string UserName
{
    get
    {
        return base.UserName.ToLower();
    }
}

aspnet_Users标准表有两列保存用户名:UserName和LoweredUserName。查看数据库没有大写的用户名。那怎么会发生?

0 个答案:

没有答案