Получить список значений профилей пользователей со стандартными полями, такими как электронная почта - PullRequest
4 голосов
/ 12 октября 2009

У меня есть приложение ASP.NET. Я использую аутентификацию с профилями пользователей. Я использую SQL Server в качестве поставщика данных. Я хочу заполнить элемент управления GridView всеми пользователями системы дополнительной информацией профиля.

Пока я делаю так:

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

С этим я могу составить список с полями: UserName и Email. Но теперь я хочу добавить поля First и LastName, которые я сохраняю как данные профиля.

Я нашел этот пост и попытался сделать так:

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

но это дает мне только стандартные пользовательские поля, такие как 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          | ....

так что это означает, что мне нужно проанализировать строки, чтобы получить мои значения.

Мои вопросы:

  1. Это хорошая политика для запроса таблиц aspnet_ напрямую, используя SELECT?
  2. Как получить GridView, который содержит UserName, Email, LastActivityDate, FirstName, LastName (информация о стандарте и профиле вместе).

1 Ответ

3 голосов
/ 12 октября 2009

Как вы обнаружили, поставщик профилей ASP.NET по умолчанию сохраняет всю информацию профиля в отдельном поле, разделенном двоеточиями, для каждого пользователя.

Вам лучше взглянуть на Пример поставщика профилей таблиц SQL , выпущенный MS. Это позволит вам создать удобный профиль на основе таблиц, который затем можно будет передать в GridView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...