我有 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_Users
和aspnet_Profile
表,但 FirstName 和 LastName 字段的存储方式如下:
UserId | PropertyNames | PropertyValuesString | ....
----------------------------------------------------------------------
someId | FirstName:S:0:6:LastName:S:6:5: | ThomasSmith | ....
所以这意味着我必须解析字符串来获取我的值。
我的问题是:
aspnet_
直接使用查询表是一个好策略SELECT
吗?- 如何获取包含 UserName、Email、LastActivityDate、FirstName、LastName(标准和配置文件信息一起)的 GridView。