2012-01-17 2 views
2

У меня есть сайт MVC3, и я пишу код для регистрации пользователя. Делает код:Как установить данные профиля для нового пользователя

MembershipCreateStatus createStatus; 
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

Следующая вещь, которую она делает это:

HttpContext.Profile["FirstNAme"] = model.FirstName; 
HttpContext.Profile["LastName"] = model.LastName; 

Это где это не удается. Ошибка, которую я получаю:

Это свойство не может быть настроено для анонимных пользователей.

Я понимаю, почему; это потому, что пользователь не зарегистрирован или не указан пользователем, поэтому, конечно, я не могу установить профиль для пользователя. Я работаю со страницы 754, начиная с Pro ASP.NET MVC 3 Framework, и откуда я получил этот код. Я установил это в файле web.config.

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

Мой вопрос: как установить имя и фамилию пользователя, которого я пытаюсь зарегистрировать?

ответ

5

Попробуйте получить профиль для пользователя этого пользователя с помощью:

ProfileBase profile = ProfileBase.Create(model.UserName); 

Да, создать «получает» профиль для пользователя, которого вы только что создали, не только создает его (вводит в заблуждение!). Затем вы можете использовать:

profile["FirstName"] = model.FirstName; 
profile["LastName"] = model.LastName; 

Не забудьте позвонить profile.Save(); после установки значения