Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当ASP.NET MVC 3帐户脚手架调用Membership.Createuser时会发生什么情况?_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

当ASP.NET MVC 3帐户脚手架调用Membership.Createuser时会发生什么情况?

当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

我是一个asp mvc 3 noob,试图修改用户帐户脚手架以容纳更多信息。当用户创建帐户时,我想添加其他信息,比如他们的全名和开始日期——而不仅仅是用户名/pw。我将把这个添加的信息存储在数据库中的Employees表中

我在AccountController中看到一行代码,在用户输入表单后创建帐户

Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
这行代码似乎调用了SQLServer中的存储过程。看起来最有可能的存储过程是aspnet\u Membership\u CreateUser。但是这个存储过程有13个参数,上面的代码传递8个参数

  • 上面显示的VB代码(membership.createuser…)调用了什么存储过程
  • 为什么aspnet\u Membership\u CreateUser和Membership.CreateUser的参数数不相同
  • 如何修改“创建用户代码/存储过程”,根据注册表中的信息将员工信息添加到EmployeeTable中,然后在用户帐户和员工记录之间添加链接?一般来说,我们的想法是将员工信息作为附加参数添加到存储过程中,然后让存储过程执行插入/添加ID,但我到底希望在哪里执行此操作

  • 我无法回答您的其他问题,但以下是我使用扩展用户注册以包含更多日期的代码(使用配置文件表,而不是配置文件提供程序):

    '
    '过帐:/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”中的代码

  • 存储附加数据的方式多种多样。我更喜欢通过UserId/电子邮件地址链接表,在创建用户时,我调用CreateUser,如果成功,则保存额外的数据(这是该教程中描述的方法的一个微小变化)。您还可以修改/扩展整个成员资格提供程序,请参见或

  • '
    ' 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