5

理想的な 'hello world' では、強く型付けされたモデルをビューに戻す必要があります。

return View(MyModel);

物事が粘着性になった場合は、作成できます

ビューモデル

return View(MyViewModel);

元。

MyViewModel

  1. マイモデル
  2. フー

ViewModel全体の作成を避けることができます

部分的にViewBagを使用します。

ViewBag.Foo = Foo;
return View(MyModel);

強く型付けされた機能の一部が失われることに気付きました

(例: インテリセンス)

そのViewBagの私のビューで。

このアプローチはずさんですか?MVCの略語に対して?

もしそうなら、ViewBag の本当のポイントは何ですか?

4

3 に答える 3

5

私が知っている最も有用な使用例は、すべてのページに表示されるメッセージのような帯域外データです。アクション フィルターは、そのメッセージを条件付きで ViewBag に追加できます。分野横断的な問題になる可能性があるため、すべてのビュー モデル クラスを変更して無関係なメッセージを保持することはおそらく望ましくありません。このようなメッセージ/ウィジェットの例は、スタック オーバーフローの停止通知です。

ビュー モデルの代わりにViewBag を使用することはお勧めしません。モデル クラス アプローチには、クラス作成のわずかなコストで典型的な静的型付けの利点があります。

于 2013-10-11T14:20:50.663 に答える
1

これは良い質問です。個人的には、何の意味もないと思います。「怠惰な」コーディングを奨励するだけです。dynamicオブジェクトには用途がありますが、 がViewBagそれらの 1 つであるとは考えていません。特に、扱っている型がわかっViewData[]ている場合は、 /を使用してそこに型安全性を取得したいと考えています。ViewModel

于 2013-10-11T14:34:36.197 に答える