2010-08-08 38 views
10

我有一個使用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> 

任何想法?

回答

9

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

或者,您可以創建自己的表來存儲其他用戶相關信息。這是一個更復雜的工作,因爲您正在創建自己的表並創建代碼以從這些表中獲取數據並將數據保存到這些表中,但是我發現使用這種方式的自定義表可以提供更大的靈活性和更好的可維護性(特別是默認的配置文件提供程序SqlProfileProvider,它以低效,非規範化的方式存儲配置文件數據)。

看看這個教程,我在這裏通過這個過程:Storing Additional User Information

3

你打算使用Profile Provider來做這件事,那就是它的意思。如果您修改成員資格提供商以添加其他字段,則會破壞提供商合同,並且您將來無法切換到另一個字段。

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

如果您使用的是SQL成員資格提供可能比你安裝了所有支持配置文件提供者,以及表的結構。

2

添加名爲 「地址」 新列:

步驟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

相關問題