40

ViewBag/ViewData と ViewModel をいつ使用するかについて多くの投稿を見てきましたが、ViewBag のライフサイクルの説明を見つけることができませんでした。

たとえば、1 つのコントローラーに 2 つの Action メソッドがあります。

// POST: /MyModel/Edit/5
[HttpPost]
public ActionResult Edit(MyModel _mymodel){}

// GET: /MyModel/Edit/5
public ActionResult Edit(int id){}

GET アクション メソッドの ViewBag にいくつかの値を入れて、いくつかのフォーム ラベルを設定すると、ユーザーが [送信] ボタンをクリックし、フォームが HTTP POST 経由でサーバーにポストバックされると、ViewBag の値は含まれなくなります。 POST アクション メソッド。

誰かが ViewBag/ViewData のライフサイクルを説明 (または良い記事への参照を提供) できますか?

4

4 に答える 4

42

ViewBag/ViewData に入れたデータは、データを入力したリクエストのライフサイクル中にのみ利用できます。MVC にはポストバックがありません。複数のリクエストに渡って何かを保持する必要がある場合は、Session を使用する必要があります。

ViewData、ViewBag、および TempData の違いに関する適切な記事を次に示します

于 2012-02-08T02:01:02.340 に答える
0

ViewBagViewData同じ目的で使用されます。これらは、コントローラーからビューにデータを渡すために使用されます。それらにデータまたはオブジェクトを割り当てると、ビューでアクセスできます。

  • ViewData: ViewDataオブジェクトの辞書であり、文字列をキーとしてアクセスできます。
  • ViewBag: 動的機能を使用します。オブジェクトが動的プロパティを追加できるようにします。
于 2012-07-23T12:58:40.863 に答える