将列添加到Membership表。但无法访问它们? ASP.NET C#

时间:2011-03-21 21:37:21

标签: c# asp.net visual-studio

我有自动添加的默认成员资格表,然后只使用服务器资源管理器添加更多列,例如FirstNameLastName等。在我的代码中,我可以访问所有默认列,但不是我创造的那些。我需要做什么特别的事情?

以下是我访问该表的方法。使用user.为我提供了所有列,但是我创建的列。

    string userName = User.Identity.Name;


    MembershipUser user = (MembershipUser)System.Web.Security.Membership.GetUser(userName).ProviderUserKey;

3 个答案:

答案 0 :(得分:2)

我相信你必须通过自定义个人资料字段来做到这一点。 http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/9/adding-custom-profile-fields.aspx

答案 1 :(得分:2)

您无法做到这一点的原因是因为MembershipUser不公开这些属性。为了做到这一点,你将不得不扩展该类,以及更多的工作。另外,我不建议修改现有的成员资格表。

您有两种选择:

1:使用Derek Beattie提到的内置asp.net配置文件。 或

2:创建一个单独的表来存储其他用户详细信息。这是你如何做到的:

Store-Additional Information

Custom Table

如果你想在这里走很长的路线是how to extend existing membership API

答案 2 :(得分:0)

添加名为“FirstName”的新列:

第1步: Models / IdentityModels.cs

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

public string FirstName { get; set; }

第2步:模型/ AccountViewModels.cs

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

public string FirstName { get; set; }

第3步:观看/ Register.cshtml

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

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

第4步:

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

    步骤A:输入“启用 - 迁移”并按enter键     步骤B:键入“Add-Migration”FirstName“”并按enter键     步骤C:输入“Update-Database”并按enter

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

第5步:Controllers / AccountController.cs

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

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