2010-08-08 16 views
10

Mam podstawową aplikację korzystającą z dostawcy członkostwa ASP.NET. Domyślnie możesz użyć kilku pól, takich jak nazwa użytkownika, hasło, zapamiętaj mnie.Jak dodać dodatkowe pole za pomocą dostawcy członkostwa ASP.Net?

Jak dodać dostawcę członkostwa asp.net, aby dodać dodatkowe pole "adres" w sekcji rejestru i zapisać go w bazie danych?

Obecnie widoczne są następujące podczas tworzenia użytkownika w modelu rachunku:

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; 
} 

W funkcji tworzenia użytkownika, ja też chce uratować „adres” użytkownika.

W register.aspx Dodałem następujące:

<div class="editor-label"> 
    <%: Html.LabelFor(m => m.Address) %> 
</div> 
<div class="editor-field"> 
    <%: Html.TextAreaFor(m => m.Address) %> 
</div> 

pomysłów?

Odpowiedz

9

Jak zauważyłem w jwsample, można użyć do tego celu Dostawcy profili.

Można również utworzyć własne tabele, które przechowują dodatkowe informacje związane z użytkownikiem. To trochę więcej pracy, ponieważ jesteś na haku do tworzenia własnych tabel i tworzenia kodu do pobierania i zapisywania danych do iz tych tabel, ale uważam, że używanie niestandardowych tabel w ten sposób pozwala na większą elastyczność i większą łatwość konserwacji niż dostawca profilu (konkretnie, domyślny dostawca profilu, SqlProfileProvider, który przechowuje dane profilu w nieefektywny, zdenormalizowany sposób).

Spójrz na ten samouczek, w którym przejdę ten proces: Storing Additional User Information.

3

Będziesz chciał użyć dostawcy profilu, do czego to było przeznaczone. Jeśli zmodyfikujesz dostawcę członkostwa, aby dodać dodatkowe pole, przerwie on umowę dostawcy i nie będzie można w przyszłości przejść na inną.

Oto dostawca profil: http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx
Więcej informacji: http://msdn.microsoft.com/en-us/library/014bec1k.aspx

Jeśli używasz dostawcy członkostwa sql niż prawdopodobnie masz wszystkie struktury tabeli zainstalowane na wsparcie dostawcy preferencji, jak również.

2

Aby dodać nową kolumnę o nazwie "adres":

Krok 1: models/IdentityModels.cs

Dodaj następujący kod do "ApplicationUser" Klasa:

public string Address{ get; set; } 

Krok 2: Modele/kontoViewModels.cs

Dodaj następujący kod do klasy "RegisterViewModel":

public string Address{ get; set; } 

Krok 3: views/Rejestracja.cshtml

Dodaj adres wejściowe pole tekstowe do widoku:

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

Krok 4:

przejdź do Narzędzia> Nuget Menedżer> Pakiet Konsola Menedżer

Etap A: Wpisz „enable-Migracje "I naciśnij Enter
Krok B: Wpisz" Add-Migration "Address" "i naciśnij Enter
Krok Krok: wpisz" Update-Database "i p Ress wprowadzić

tj

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

Krok 5: controllers/AccountController.cs

idź się zarejestrować i dodać Akcja "address = model.Address" do ApplicationUser tj

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

Doskonałe rozwiązanie, zaoszczędzone mnóstwo kłopotów. Dziękuję, czy mógłbyś wyjaśnić krok 4. Dla mnie '.Net' stworzył kilka klas w folderze o nazwie' Migrations', Co to jest? co się stanie, jeśli opublikuję projekt? –

+1

Możesz odnieść się do https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-entity-framework-scaffolding-and-migrations dla Detale –

Powiązane problemy