如何使用ASP.Net成员资格提供程序添加额外字段?

时间:2010-08-08 19:45:15

标签: asp.net-membership

我有一个使用ASP.NET成员资格提供程序的基本应用程序。默认情况下,您可以使用一些字段,如用户名,密码,记住我。

如何添加到 asp.net会员提供程序,以便我可以在注册部分添加一个额外的字段“地址”并将其保存到数据库中?

我在帐户模型中创建用户时会看到以下内容:

public MembershipCreateStatus CreateUser(string userName, string password,
   string email)
{
   if (String.IsNullOrEmpty(userName))
   { throw new ArgumentException("Value cannot be null or empty.", "userName"); }
   if (String.IsNullOrEmpty(password))
   { throw new ArgumentException("Value cannot be null or empty.", "password"); }
   if (String.IsNullOrEmpty(email))
   { throw new ArgumentException("Value cannot be null or empty.", "email"); }

   MembershipCreateStatus status;
   _provider.CreateUser(userName, password, email, null, null, true,
       null, out status);

   return status;
}

在创建用户功能中,我还想保存用户的“地址”。

register.aspx 中,我添加了以下内容:

<div class="editor-label">
    <%: Html.LabelFor(m => m.Address) %>
</div>
<div class="editor-field">
    <%: Html.TextAreaFor(m => m.Address) %>
</div>

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

正如jwsample所述,您可以使用配置文件提供程序。

或者,您可以创建自己的表来存储其他与用户相关的信息。这是一个更多的工作,因为你已经开始创建自己的表并创建代码来获取和保存这些表的数据,但我发现以这种方式使用自定义表允许更大的灵活性和更高的可维护性而不是Profile Provider(特别是默认的Profile Provider,SqlProfileProvider,它以低效的非规范化方式存储配置文件数据)。

看一下本教程,我将逐步完成此过程:Storing Additional User Information

答案 1 :(得分:3)

您将要使用配置文件提供程序,这就是它的意义所在。如果您修改成员资格提供程序以添加附加字段,它将违反提供者合同,并且您将来无法切换到另一个。

以下是个人资料提供者:http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx
更多信息:http://msdn.microsoft.com/en-us/library/014bec1k.aspx

如果您使用的是sql成员资格提供程序,那么您可能已安装了所有表结构以支持配置文件提供程序。

答案 2 :(得分:2)

添加名为“地址”的新列:

第1步: Models / IdentityModels.cs

将以下代码添加到“ApplicationUser”类:

public string Address{ get; set; }

第2步:模型/ AccountViewModels.cs

将以下代码添加到“RegisterViewModel”类:

public string Address{ get; set; }

第3步:观看/ Register.cshtml

将地址输入文本框添加到视图中:

<div class="form-group">
        @Html.LabelFor(m => m.Address, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Address, new { @class = "form-control" })
        </div>
</div>

第4步:

转到工具&gt; NuGet Manager&gt;包管理器控制台

    步骤A:输入“启用 - 迁移”并按enter键     步骤B:输入“添加 - 迁移”地址“”,然后按enter键     步骤C:输入“Update-Database”并按enter

PM> Enable-Migrations
PM> Add-Migration "Address"
PM> Update-Database

第5步: Controllers / AccountController.cs

转到“注册操作”并将“Address = model.Address”添加到ApplicationUser 即

 var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Address= model.Address}