0

私はたくさんのテーブルを持っています。各テーブルには「ステータス」列があります。列には文字 A または I が含まれます。A = アクティブで、I = 非アクティブです。

各テーブルに対応する作成ビューがあります。Active と Inactive の 2 つの値を表示するドロップダウン ボックスを表示し、それに応じてマップしたいと考えています。

ステータスのドロップダウンが必要な各ビューで次のことができることを知っています

@Html.DropDownListFor(model => model.status, new SelectList(new[] { new { ID = "A", Desc = "Active" }, new { ID = "I", Desc = "Inactive" } }, "ID", "Desc"))

ただし、明日ステータスをもう 1 つ追加することにした場合は、すべてのビューを変更する必要があります。

もう 1 つのオプションは、この記事で説明されているように、ディクショナリを作成し、それをビュー モデルに渡すことです。

ただし、ステータスリストに対応するためだけに、モデルごとにビューモデルを作成する必要があります。

これを達成できる他の方法はありますか?

4

2 に答える 2

1

一意のビューごとにビュー モデルを使用することをお勧めします。長期的には、UI の操作と保守が容易になります。

私の経験では、View Model のアプローチは極端になり、逆効果になる可能性があります。たとえば、Customer Entity の VM を作成する場合、Customer Entity と同じプロパティをすべて持つ CustomerVM を再作成しません。代わりに、Customer エンティティ全体を保持する CustomerVM に Customer Property を作成するだけです。ビューにすべての顧客エンティティ情報が表示されていない場合、必要以上の情報をビューに公開する可能性があるため、このアプローチに反対する人もいます。確かにそうですが、実装と保守が迅速で簡単なソリューションが好きです。

将来、何が必要になるかわかりません。時間が経つにつれて、このアプローチが最も柔軟なソリューションであることがわかりました。

したがって、共通のルックアップ リストを持つすべてのビューのベース ビュー モデルを作成し、新しいビュー モデルがこのベース VM から継承されるようにすることができます。

それはそれを行う1つの方法です。:)

于 2012-05-31T19:23:55.893 に答える
0

次のリンクは、mvc でドロップダウン リストをバインドするのに役立つ場合があります

http://www.c-sharpcorner.com/UploadFile/deveshomar/ways-to-bind-dropdown-list-in-Asp-Net-mvc/

于 2013-12-03T05:41:13.327 に答える