6

MVCアプリケーションでViewBagを多用していますが、これは悪い習慣と見なされますか?ViewModelの作成に時間を費やすか(ただし、MVCよりもMVVMに適していると思いました)、ViewBagを頻繁に使用し続けるかどうかはわかりません。これに対する賛否両論は何ですか?コントローラメソッドの例では、そのモデル(通常は単純なドメインエンティティ)と、次のViewBagの呼び出しが返されます。

            ViewBag.TotalItems = data.Count();
        ViewBag.FilteredItems = gridFilters;
        ViewBag.Action = "Events";
        ViewBag.Area = "People";
        ViewBag.EntityID = person.EntityID;
        ViewBag.OrganisationID = ID;
        ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName);
        ViewBag.IsEnabled = person.IsEnabled;
        ViewBag.EntityID = person.EntityID;
        ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID);

        ViewBag.Columns = userColumns;

        ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events";
4

2 に答える 2

9

このような質問は通常、フェンスの両側から回答を得ます。多くの人は、このようにViewBagを使用することは悪いデザインだと感じています(私自身も含まれます)。これにより、コントローラーのテストが容易になります。あなたの意見は強くタイプされていない、など。

通常、を使用することをお勧めしますViewModel。モデルをドメインモデルにする代わりに、表示しているビューに固有のモデルを作成します。そうすれば、この特定のビューに必要なものに合わせて100%カスタム調整できます。これを行うと、ViewBagを実際に使用する必要がなくなることがわかります。多くの余分なコード(ビューごとに1つのビューモデル)を作成する場合がありますが、コードは非常に単純であり、1つのビューに変更を加えても他のビューが破損することはありません。

于 2011-11-30T15:32:26.157 に答える
0

モデルとしてPersonを使用してみませんか?そうすれば、強く型付けされたビューを使用できます。私の個人的な意見では、ViewBagはほとんど「マジックストリング」であり、あなたが唯一の開発者である小規模ではうまく機能しますが、大規模なアプリケーションやプロジェクトでは、すべてのマジックストリングが何であるかを全員に覚えさせる必要があります。また、モデルと強く型付けされたビューを使用する場合のような型の安全性は得られません。

于 2011-11-30T15:16:05.660 に答える