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

问题描述:

我有一个使用ASP.NET成员资格提供程序的基本应用程序。默认情况下,您可以使用几个字段,如用户名,密码,记住我。如何使用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> 

任何想法?

正如jwsample提到的那样,您可以使用Profile Provider进行此操作。

或者,您可以创建自己的表来存储其他用户相关信息。这是一个更复杂的工作,因为您正在创建自己的表并创建代码以从这些表中获取数据并将数据保存到这些表中,但是我发现使用这种方式的自定义表可以提供更大的灵活性和更好的可维护性(特别是默认的配置文件提供程序SqlProfileProvider,它以低效,非规范化的方式存储配置文件数据)。

看看这个教程,我在这里通过这个过程:Storing Additional User Information

你打算使用Profile Provider来做这件事,那就是它的意思。如果您修改成员资格提供商以添加其他字段,则会破坏提供商合同,并且您将来无法切换到另一个字段。

这里是配置文件提供者:http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx
更多信息:http://msdn.microsoft.com/en-us/library/014bec1k.aspx

如果您使用的是SQL成员资格提供可能比你安装了所有支持配置文件提供者,以及表的结构。

添加名为 “地址” 新列:

步骤1:型号/ IdentityModels.cs

下面的代码添加到 “ApplicationUser” 类:

public string Address{ get; set; } 
步骤2: Models/AccountViewModels.cs

下面的代码添加到 “RegisterViewModel” 类:

public string Address{ get; set; } 

第3步:查看/注册。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步:

转到工具>的NuGet管理>程序包管理器控制台

步骤A:输入“启用的迁移“,然后按回车键
步骤B:键入”添加迁移“地址”“并按回车键
步骤C:键入”更新数据库“和p RESS进入

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

第5步:控制器/ AccountController.cs

去注册行动,并添加 “地址= model.Address” 到ApplicationUser 即

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

优秀的解决方案,节省了很多麻烦。谢谢,请你解释第4步。对我来说'.Net'已经在名为'Migrations'的文件夹中创建了一些类,这些是什么?如果我发布该项目会发生什么? – 2017-08-22 00:39:36

+1

你可以参考https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-entity-framework-scaffolding-and-migrations细节 – 2017-09-02 05:14:40