私は.net mvc認証を使用しています。私は名前のようなAspNetUsersテーブルにいくつかの異なるフィールドを追加しました。ユーザーが最初の名前を入力することを含めてシステムに登録すると、そのテーブルに入力され、正常に動作します。AspNetUsersテーブルからカスタムプロパティを追加する.net mvc
私がしたいのは、/ Manage/Indexで編集可能なAspNetUsersのフィールドのいくつか(例:firstname、lastname)を作ることです。/Manage/Indexは、以下のIndexViewModelを使用します。
public class IndexViewModel
{
public bool HasPassword { get; set; }
public IList<UserLoginInfo> Logins { get; set; }
public string PhoneNumber { get; set; }
public bool TwoFactor { get; set; }
public bool BrowserRemembered { get; set; }
}
コントローラのアクションは次のとおりです。
public async Task<ActionResult> Index(ManageMessageId? message)
{
ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ?
var userId = User.Identity.GetUserId();
var model = new IndexViewModel
{
HasPassword = HasPassword(),
PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
Logins = await UserManager.GetLoginsAsync(userId),
BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
};
return View(model);
}
は、私の質問は以下のとおりです。
私はちょうどそこになど、姓、私自身のChangeDetailsビューとコントローラと変更FIRSTNAMEを作成する必要がありますか?
@model IndexViewModelを使用して管理/インデックスを使用する - 私はそのIndexViewModelでAspNetUserテーブルにアクセスする方法が完全にはわかりません - userIdが利用可能な場合、私はそのIDでテーブルをクエリできます。
これは管理/インデックスで簡単に行うことができますが、私はそれを必要以上に難しくしています。
ありがとう。あなたはModels\IdentityModels.cs
にApplicationUser
クラスに追加のプロパティを追加した場合
これは素晴らしいことです。 Jaimeに感謝します。新しいIndexViewModelのプロパティが設定されているときにasync/awaitがなぜ存在するのかを説明するだけですか? – Mike
'FindByIdAsync'メソッドは、メインアプリケーションとは別のスレッド上で実行されるため、' async/await'パターンを使用してタスクを実行しますが、現在の実行スレッドをロックしません。詳細については、[asyncとawaitを使用した非同期プログラミング](https://msdn.microsoft.com/en-us/library/mt674882.aspx) –
ありがとうございます。最後の1つの質問。ユーザがAspNetUserのいくつかのフィールドの詳細を変更すると終了します。私は、そのデータをバインドし、AspNetUserテーブルに配置するmanagecontrollerでpostメソッドを作成する必要がありますか? – Mike