Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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 membership 如何使用ASP.Net成员资格提供程序添加额外字段?_Asp.net Membership - Fatal编程技术网

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

Asp.net membership 如何使用ASP.Net成员资格提供程序添加额外字段?,asp.net-membership,Asp.net Membership,我有一个使用ASP.NET成员资格提供程序的基本应用程序。默认情况下,您可以使用一些字段,例如用户名、密码、记住我 如何添加到asp.net成员资格提供程序,以便在“注册”部分添加一个附加字段“地址”,并将其保存到数据库 在帐户模型中创建用户时,我当前看到以下内容: public MembershipCreateStatus CreateUser(字符串用户名、字符串密码、, 字符串(电子邮件) { if(String.IsNullOrEmpty(用户名)) {抛出新ArgumentExcept

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

如何添加到asp.net成员资格提供程序,以便在“注册”部分添加一个附加字段“地址”,并将其保存到数据库

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

public MembershipCreateStatus CreateUser(字符串用户名、字符串密码、,
字符串(电子邮件)
{
if(String.IsNullOrEmpty(用户名))
{抛出新ArgumentException(“值不能为null或空。”,“用户名”);}
if(String.IsNullOrEmpty(密码))
{抛出新ArgumentException(“值不能为null或空。”,“密码”);}
if(String.IsNullOrEmpty(电子邮件))
{抛出新ArgumentException(“值不能为null或空。”,“email”);}
成员资格和状态;
_CreateUser(用户名、密码、电子邮件、null、null、true、,
空,输出状态);
返回状态;
}
在createuser函数中,我还想保存用户的“地址”

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


m、 地址)%%>
m、 地址)%%>

有什么想法吗?

您需要使用配置文件提供程序来实现此目的,这就是它的目的。如果修改成员资格提供程序以添加附加字段,则会破坏提供程序合同,并且将来无法切换到其他字段

以下是配置文件提供程序:
更多信息:


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

正如jwsample所指出的,您可以使用概要文件提供程序来实现此目的

或者,您可以创建自己的表来存储其他与用户相关的信息。这是一项稍多的工作,因为您需要创建自己的表,并创建代码来获取和保存这些表中的数据,但我发现以这种方式使用自定义表比配置文件提供程序具有更大的灵活性和更高的可维护性(特别是默认的概要文件提供程序SqlProfileProvider,它以低效、非规范化的方式存储概要文件数据)


请看本教程,我将在其中介绍以下过程:.

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

步骤1:模型/IdentityModels.cs

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

步骤2:模型/AccountViewModels.cs

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

步骤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>
步骤5:控制器/AccountController.cs

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


非常好的解决方案,省去了很多麻烦。谢谢,请您解释一下步骤4。对于我来说,
.Net
在一个名为
Migrations
的文件夹中创建了一些类,这些类是什么?如果我发布项目,会发生什么?您可以参考详细信息
public string Address{ get; set; }
<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>
PM> Enable-Migrations
PM> Add-Migration "Address"
PM> Update-Database
 var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Address= model.Address}