0

mvc コントローラー内の一部のメモリのみのデータを操作したいので、現在のデータ表現を保持するタイプ _user のプライベート プロパティを導入しました。コントローラーのコンストラクターで、これらのプライベート プロパティをいくつかのデータで開始しています。

public class UserController : Controller
{
   private User _user = null;
   private User Data()
   {  _user = new User {Id = .... ... } 
   }

   public UserController()
   {
      _user = Data();
   }
}

これは問題ありません。データは適切に入力されており、編集フォームから投稿アクションにこれらの初期データ (いくつかの変更を加えて) が適切に送信されています

[HttpPost]
public ActionResult Edit(User user)
{
    _user.Name = user.Name;
    _user.Pass = user.Pass;
    return redirectToAction("Index");

}

そしてインデックスアクションには

public ActionResult Index()
{
    return View(_user);
}

ただし、インデックスをレンダリングしてもデータは同じままです。

私が間違っていることは何ですか?

4

1 に答える 1

2

アプリケーションを呼び出すとRedirectToAction("Index");、ブラウザの http コード 302 (リダイレクト) に送信され、ブラウザはインデックス ページを呼び出します。したがって、コントローラーが再度初期化され、そのコンストラクターが再度呼び出されます。

目的を達成するには、ユーザー データをデータベースまたは別のストレージに実際に保存しEdit、このデータを実際のストレージから取得する必要がありますIndex

また、(これを 2 つの呼び出し間でのみ保存する場合)、コントローラー クラスのプロパティにユーザー データを追加TempDataし、次の呼び出しでそこに取得するか、Sessionプロパティを使用することができます。

于 2013-10-11T06:47:42.740 に答える