Я использую ASP.NET MVC 3. Я использую то, что по сути бесплатно, в шаблоне проекта Visual Studio для проекта MVC с опцией «Интернет-приложение». По сути, это обеспечивает проверку подлинности с помощью форм и предоставляет некоторые основные элементы для управления входом пользователя в систему и другими вещами.
Я также использую материал веб-профилей для хранения некоторых пользовательских полей. Все шло отлично. Я использую SuperFunProfile
в качестве оболочки для экземпляра Profile
, чтобы упростить доступ к свойствам профиля.
Пока я не хотел установить свойство профиля сразу после регистрации пользователя.
Проблема, которую я не могу решить, состоит в том, что this.Request.RequestContext.HttpContext.Profile
содержит профиль для анонимного пользователя. Как я могу получить новый профиль для пользователя теперь, когда он должен быть зарегистрирован и вошел в систему?
public ActionResult SignUp(SignUpModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus = this.MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success)
{
this.FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
var profile = new SuperFunProfile(this.Request.RequestContext.HttpContext.Profile);
profile.DisplayName = model.UserName;
profile.Save();
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError(string.Empty, AccountValidation.ErrorCodeToString(createStatus));
}
}
Я осмотрел членство и Web.Profile, но не вижу ничего похожего на то, что это приблизит меня к моей цели.
Может быть, мне следует просто создать ProfileModel, который я сохраню в БД, а не использую Web.Profile? Я мог бы указать это на MembershipUser.ProviderUserKey
, что облегчит создание ProfileModel при регистрации, я полагаю.