Профили пользователей ASP.NET MVC 3 не создаются - PullRequest
1 голос
/ 29 ноября 2011

Для моего приложения ASP.NET MVC 3 (с использованием Razor) мой web.config имеет следующее:

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
  <properties>
    <add name="FirstName"/>
    <add name="LastName"/>
  </properties>
</profile>

Насколько я понимаю, прочитав документы, ASP.NET автоматически сгенерирует свойства из HttpContext, чтобы я мог получить к ним следующий доступ:

 // MyController.cs

 Email = u.Email;
 FirstName = HttpContext.Profile.FirstName;
 LasttName = HttpContext.Profile.LastName;

Тем не менее, компилятор недоволен тем, что .FirstName и .LastName не существует.

Что здесь происходит?

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Попробуйте этот подход:

  1. Создайте класс (например, назовите его UserProfile), расширяющий ProfileBase
  2. Добавьте ваши общедоступные свойства Email и т. Д. (Незабудьте {get;set;})
  3. Измените ваш Web.config, как показано ниже (измените наследование на ваше пространство имен)
  4. Теперь вы сможете получить к нему доступ через (UserProfile)HttpContext.Current.Profile

Ваш Web.config:

<profile defaultProvider="AspNetSqlProfileProvider" inherits="Namespace.To.Your.UserProfile">
    <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" connectionStringName="ConnectionStringName" type="System.Web.Profile.SqlProfileProvider" applicationName="App" />
    </providers>
</profile>

Класс вашего профиля:

public class UserProfile : ProfileBase
{
    public string Email
    {
        get { return (string)GetPropertyValue("Email"); }
        set { SetPropertyValue("Email", value); }
    }
}
0 голосов
/ 14 октября 2012

При использовании веб-форм ASP.NET доступ к данным профиля осуществляется через прокси-объект, свойства которого соответствуют свойствам профиля. Эта функция недоступна для приложений MVC Framework.
Вы можете получить значение свойства профиля пользователя так:

public ActionResult Index() 
{
    ViewBag.Name = HttpContext.Profile["Name"];
    ViewBag.City = HttpContext.Profile.GetProfileGroup("Address")["City"];
    return View();
}

вернет текущее значение свойства профиля пользователя, зарегистрированного в системе.

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