ユーザーデータの更新 - ASP.NET Identity
質問
カスタムフィールドを
ApplicationUser
クラス
また、ユーザーがフィールドを入力/編集できるようなフォームを作成しました。
しかし、何らかの理由で、私はデータベースのフィールドを更新することができません。
[HttpPost]
[ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Manage(EditProfileViewModel model)
{
if (ModelState.IsValid)
{
// Get the current application user
var user = User.Identity.GetApplicationUser();
// Update the details
user.Name = new Name { First = model.FirstName, Last = model.LastName, Nickname = model.NickName };
user.Birthday = model.Birthdate;
// This is the part that doesn't work
var result = await UserManager.UpdateAsync(user);
// However, it always succeeds inspite of not updating the database
if (!result.Succeeded)
{
AddErrors(result);
}
}
return RedirectToAction("Manage");
}
私の問題は、次のようなものです。 MVC5 ApplicationUserのカスタムプロパティ に似ていますが、IdentityManagerクラスが存在しないため、古いバージョンのIdentityを使用しているようです。
を更新する方法について、どなたか教えていただけませんか。
User
の情報を更新する方法を教えてください。
UPDATEです。
登録フォームにすべてのフィールドを含めると、すべての値は、新しいレコードの適切なフィールドに格納されます。
Users
テーブルの新しいレコードの該当フィールドに格納されます。
既存のユーザー(の行)のフィールドに変更を加えることは分かりません。
users
テーブルの行)。
UserManager.UpdateAsync(user)
は機能しません。
また、私の問題はEntityFrameworkよりもIdentity指向であることに注意してください。
どのように解決するのですか?
OK... 私は何時間もかけて、なぜ
userManager.updateAsync
が編集したユーザーデータを持続させないのか......次の結論に達するまで、私は何時間も費やしました。
この混乱は、私たちが
UserManager
をこのように一行で作成していることにあります。
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new MyDbContext()));
...それから
manager.UpdateAsync( user );
を使いますが、これではコンテキストのユーザが更新されてしまい、IdentityのDBcontextに変更を保存する必要があります。そこで、問題は、最も簡単な方法でIdentityのDBcontextを取得する方法です。
これを解決するためには
UserManager
を1行にまとめることです......その方法は以下の通りです。
var store = new UserStore<ApplicationUser>(new MyDbContext());
var manager = new UserManager(store);
を呼び出してユーザーを更新した後
manager.UpdateAsync(user);
で、コンテキストに移動します。
var ctx = store.context;
では
ctx.saveChanges();
wahooooooo...persisted :)
これが数時間髪を引っ張っていた人の助けになることを願っています :P
関連
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET Identity - HttpContextにはGetOwinContext用の拡張メソッドがありません。
-
[解決済み】認証や認可に失敗した場合、AuthorizeAttributeがログインページにリダイレクトされるのはなぜですか?
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み】ASP.NET MVC Html.ValidationSummary(true) でモデルエラーが表示されない。
-
[解決済み】ASP.NET Identity DbContextの混乱
-
[解決済み] 不正な webapi 呼び出しにより、401 ではなく、ログインページが返される
-
[解決済み] User.Identityの利用可能なプロパティを拡張する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VS 2015でコントローラからビューを追加できない : "選択されたコードジェネレータの実行にエラーが発生しました"
-
[解決済み】@sectionスクリプトとは何か、何のために使うのか?
-
[解決済み] Razor View Engine : 式ツリーには、動的な操作を含めることができません。
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み】ASP.NET mvcとIISでURLのドットが原因で404になる
-
[解決済み】MVCアプリケーションでデータをキャッシュする方法
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み】ASP.NET MVCのルートをサブドメインに基づいて作成することは可能ですか?
-
[解決済み] ASP.NET MVCにおけるロールベースアクセスコントロール(RBAC)とクレームベースアクセスコントロール(CBAC)の比較
-
[解決済み] HTMLヘルパーでURLを生成する