我是一个asp mvc 3 noob试图修改用户帐户脚手架来保存更多信息。当用户创建帐户时,我想添加其他信息,例如他们的全名和开始日期 - 而不仅仅是他们的用户名/ pw。我将把这个添加的信息存储在DB的Employees表中。
我看到AccountController中的代码行在用户输入表单输入后创建帐户。
Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
看起来这行调用SQL Server中的存储过程。似乎最可能的存储过程是aspnet_Membership_CreateUser。但是这个存储过程有13个参数,上面的代码传递了8个参数。
答案 0 :(得分:0)
我无法回答您的其他问题,但这里是我使用的代码扩展用户注册以包含更多日期(使用配置文件表,而不是配置文件提供程序):
'
' 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
答案 1 :(得分:0)
代码将运行aspnet_Membership_CreateUser
存储过程
Membership.CreateUser
已重载,并将为未提供的参数设置默认值。例如,如果您仅使用用户名和密码调用CreateUser,则所有其他参数将被默认,例如IsApproved将是真的。 &gt;&gt;在CreateUser中键入时,您应该看到重载选项。您可以使用Just Decompile
存储其他数据的方法有很多种。 Look at this one。我更喜欢用UserId / Email地址链接表格,在创建用户时,我调用CreateUser,如果成功,则保存附加数据(这是该教程中描述的方法的略微变化)。您还可以修改/扩展整个会员提供商,请参阅this link (Implementing a Membership Provider)或this video tutorial