我正在使用 ASP.NET MVC 3。我正在使用 Visual Studio 项目模板中免费提供的内容,用于带有“Internet 应用程序”选项的 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));
}
}
我浏览了 Membership 和 Web.Profile,但我没有看到任何看起来可以让我更接近目标的东西。
也许我应该创建一个 ProfileModel 将自己存储到数据库中,而不是使用 Web.Profile?我想,我可以键入MembershipUser.ProviderUserKey
可以更容易在注册时创建 ProfileModel 的键。