1

MVC4 Web アプリで SimpleMembership を使用しています。プロフィール情報の編集方法がわかりません。他のテーブルと同じようにできると思いました。

        [HttpPost]
        public ActionResult EditUser(UserProfile user)
        {
            if (ModelState.IsValid)
            {
                udb.Entry(user).State = EntityState.Modified;
                udb.SaveChanges();
                return RedirectToAction("Index");
            }

しかし、エンティティの状態が現在のコンテキストに存在しないというエラーが表示されます。私のコンテキストは、コントローラーの上部で次のように定義されています。

private UsersContext udb = new UsersContext();

アクセスプロファイルデータに関するリファレンスはたくさんありますが、データを編集するためのものはありません。編集した UserProfile データをデータベースに保存するにはどうすればよいですか?

編集:entityState エラーを解決できました。system.data と system.data.entity を含める必要がありました。ただし、実行すると、編集時に予期しない行数が変更されたというエラーが表示されます (0)。udb.SaveChanges() 行を指します。UserProfile データ要素を変更する方法がまだわかりません。

4

1 に答える 1

0

簡単な答え。ビューでモデルのすべてのフィールドを設定する必要がありました。ユーザーが 6 つのうち 4 つだけを変更できるようにしていたので、2 つが設定されていませんでした。

モデルをビューに渡すと、ビューに設定されていない場合、ビューは同じフィールド値をアクションに渡すと思いました。例: ビューに FirstName を設定し、UserName を設定しない場合、ビューに送信された元の UserName がモデルに渡されます。そうではないようです。モデル内のすべての項目について、ビュー内での変更を許可しなかったため、非表示のフィールドを設定してフィールドを設定する必要があったため、完全なモデルが送信されました。

個々のフィールドを設定する方が良いかもしれませんが、それを行う方法はまだわかりません。それは問題ではありませんでした。

于 2012-11-01T00:58:24.537 に答える