我有自动添加的默认成员资格表,然后只使用服务器资源管理器添加更多列,例如FirstName
,LastName
等。在我的代码中,我可以访问所有默认列,但不是我创造的那些。我需要做什么特别的事情?
以下是我访问该表的方法。使用user.
为我提供了所有列,但是我创建的列。
string userName = User.Identity.Name;
MembershipUser user = (MembershipUser)System.Web.Security.Membership.GetUser(userName).ProviderUserKey;
答案 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:创建一个单独的表来存储其他用户详细信息。这是你如何做到的:
如果你想在这里走很长的路线是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}