获取用户配置文件值列表与标准字段,如电子邮件。

4
我有一个ASP.NET应用程序。我使用用户配置文件进行身份验证。我使用SQL Server作为数据提供程序。我想要做的是使用额外的配置文件信息填充GridView控件,以显示系统中所有用户的信息。
目前,我的做法是:
UserAccounts.DataSource = Membership.GetAllUsers();
UserAccounts.DataBind();

英译中:

有了这个,我可以创建一个包含“用户名”和“电子邮件”的列表。但现在我想添加名字和姓氏字段,将其存储为个人资料信息。

我找到了这篇帖子,并尝试按照以下方式操作:

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

但是这只给我标准用户字段,如电子邮件、最后活动日期等。后来我尝试为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. 直接使用 SELECT 查询 aspnet_ 表是否是一个好策略?
  2. 如何获取包含用户名、电子邮件、最后活动日期、名字和姓氏(标准和个人资料信息)的 GridView。
1个回答

3

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

您最好查看微软发布的SQL表格配置文件提供程序示例。这将使您能够创建一个漂亮的可查询表格配置文件,然后将其传递到GridView中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接