4

我有 ASP.NET 应用程序。我对用户配置文件使用身份验证。我使用 SQL Server 作为数据提供者。我想要做的是用系统中的所有用户填充 GridView 控件以及其他配置文件信息。

现在我喜欢这样:

UserAccounts.DataSource = Membership.GetAllUsers();
UserAccounts.DataBind();

有了它,我可以制作一个包含字段的列表:用户名和电子邮件。但现在我想添加我存储为个人资料信息的名字和姓氏字段。

我找到了这篇文章并尝试这样做:

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
DateTime lastActivity = profiles["some_username"].Email;

但这只给了我标准的用户字段,如电子邮件、LastActivityDate 等。后来我尝试在 GridView 表中为永远的行调用该函数。

public string GetProfileValue(string name, string UserName)
{
    ProfileBase pb = ProfileBase.Create(UserName, true);
    return pb.GetPropertyValue(name).ToString();
}

但我不认为用个人资料信息查询每个字段的数据库是有效的。我正在考虑加入aspnet_Usersaspnet_Profile表,但 FirstName 和 LastName 字段的存储方式如下:

UserId | PropertyNames                   | PropertyValuesString | ....
----------------------------------------------------------------------
someId | FirstName:S:0:6:LastName:S:6:5: | ThomasSmith          | ....

所以这意味着我必须解析字符串来获取我的值。

我的问题是:

  1. aspnet_直接使用查询表是一个好策略SELECT吗?
  2. 如何获取包含 UserName、Email、LastActivityDate、FirstName、LastName(标准和配置文件信息一起)的 GridView。
4

1 回答 1

3

正如您所发现的,默认的 ASP.NET 配置文件提供程序将所有配置文件信息存储在每个用户的单个冒号分隔字段中。

您最好查看MS 发布的SQL Table Profile Provider Sample 。这将使您能够创建一个很好的可查询的基于表的配置文件,然后您可以将其传递到您的 GridView。

于 2009-10-12T18:13:56.073 回答