当ASP.NET MVC 3帐户脚手架调用Membership.Createuser时会发生什么情况?
我是一个asp mvc 3 noob,试图修改用户帐户脚手架以容纳更多信息。当用户创建帐户时,我想添加其他信息,比如他们的全名和开始日期——而不仅仅是用户名/pw。我将把这个添加的信息存储在数据库中的Employees表中 我在AccountController中看到一行代码,在用户输入表单后创建帐户当ASP.NET MVC 3帐户脚手架调用Membership.Createuser时会发生什么情况?,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我是一个asp mvc 3 noob,试图修改用户帐户脚手架以容纳更多信息。当用户创建帐户时,我想添加其他信息,比如他们的全名和开始日期——而不仅仅是用户名/pw。我将把这个添加的信息存储在数据库中的Employees表中 我在AccountController中看到一行代码,在用户输入表单后创建帐户 Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing
Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
这行代码似乎调用了SQLServer中的存储过程。看起来最有可能的存储过程是aspnet\u Membership\u CreateUser。但是这个存储过程有13个参数,上面的代码传递8个参数
我无法回答您的其他问题,但以下是我使用扩展用户注册以包含更多日期的代码(使用配置文件表,而不是配置文件提供程序):
'
'过帐:/Account/Register
_
公共函数寄存器(ByVal模型作为RegisterModel)作为ActionResult
如果ModelState.IsValid,则
'尝试注册用户
将createStatus设置为MembershipCreateStatus
Dim MembershipUser=Membership.CreateUser(model.UserName、model.Password、model.Email、Nothing、Nothing、True、Nothing、createStatus)
如果createStatus=MembershipCreateStatus.Success,则
Dim providerKeyObject=MembershipUser.ProviderUserKey
Dim providerKeyGuid=MembershipUser.ProviderUserKey
'更新配置文件实体
Dim db As UserProfileDbContext=新UserProfileDbContext
将配置文件设置为新用户配置文件
profile.UserId=providerKeyGuid
profile.IsCompanyOwner=True
profile.CompanyId=model.Company
profile.BlogId=model.Blog
profile.IsCompanyOwner=model.IsCompanyOwner
profile.IsBlogOwner=model.IsBlogOwner
db.UserProfiles.Add(配置文件)
db.SaveChanges()
FormsAuthentication.SetAuthCookie(model.UserName,False)
'发送电子邮件
'TODO:修复发送时的错误
调用新的EmailController().VerificationEmail(模型).Deliver()
返回重定向操作(“索引”、“主目录”)
其他的
AddModelError(“,ErrorCodeToString(createStatus))
如果结束
如果结束
“如果我们走到了这一步,有些事情失败了,重新显示形式
返回视图(模型)
端函数
aspnet\u Membership\u CreateUser
存储过程Membership.CreateUser
重载,将为未提供的参数设置默认值。例如,如果仅使用用户名和密码调用CreateUser,则所有其他参数都将默认,例如IsApproved将为true。>>在CreateUser中键入时,应该可以看到重载选项。您可以使用以下工具查看“C:\Windows\Microsoft.NET\Framework\v4.0.30319\system.web.dll”中的代码'
' POST: /Account/Register
<HttpPost()> _
Public Function Register(ByVal model As RegisterModel) As ActionResult
If ModelState.IsValid Then
' Attempt to register the user
Dim createStatus As MembershipCreateStatus
Dim MembershipUser = Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
If createStatus = MembershipCreateStatus.Success Then
Dim providerKeyObject = MembershipUser.ProviderUserKey
Dim providerKeyGuid = MembershipUser.ProviderUserKey
' update profile entity
Dim db As UserProfileDbContext = New UserProfileDbContext
Dim profile As New UserProfile
profile.UserId = providerKeyGuid
profile.IsCompanyOwner = True
profile.CompanyId = model.Company
profile.BlogId = model.Blog
profile.IsCompanyOwner = model.IsCompanyOwner
profile.IsBlogOwner = model.IsBlogOwner
db.UserProfiles.Add(profile)
db.SaveChanges()
FormsAuthentication.SetAuthCookie(model.UserName, False)
' send email
' TODO: fix error on send
Call New EmailController().VerificationEmail(model).Deliver()
Return RedirectToAction("Index", "Home")
Else
ModelState.AddModelError("", ErrorCodeToString(createStatus))
End If
End If
' If we got this far, something failed, redisplay form
Return View(model)
End Function