0

これは一般的な状況に違いありません。間違った用語で検索しているだけかもしれません...

EF Code First を使用した ASP.NET MVC プロジェクトがあります。

EmailTypes (例: Home、Work、School) 用の 1 つのオブジェクト/テーブル/コントローラーがあります。オブジェクトは単純で、ID と Name フィールドだけです。これにより、さまざまな種類の電子メールを簡単に管理できます。

メール用の別のオブジェクト/テーブル/コントローラーがあります。これには、ID、名前 (例: bob@me.com)、および EmailType プロパティがあります。

新しい電子メールを作成するビューには、電子メール アドレスを入力するためのテキスト ボックスがあります。また、EmailType を選択してメールに割り当てることができるように、そこにドロップダウンを配置する必要があります。これはかなり標準的なものだと思います。

つまり... 私の EmailController では、Create()関数は View() のみを返します。

また、EmailType ドロップダウンに入力するデータを返す必要があります。

どうすればこれを達成できますか?

(注: JQuery/AJAX を使用してこのデータを取り込むことができると思います。ViewBag などに詰め込むこともできますが、もっと直接的な方法があるはずです?)

4

1 に答える 1

3

私の経験では、エンティティごとに 1 つのコントローラーを厳密に設定するのは無駄です。つまり、コントローラー アクションは、複数の種類のエンティティで動作することができ、また動作する必要があります。この場合の最善の選択肢は、EmailTypes のリストを取得するためのコードをサービス クラスに抽象化し、それを と の両方から呼び出すことだと思いEmailController.Create()ますEmailTypesController.Index()

次に、アクションのビューのIList<SelectListItem> EmailTypes { get; set; }ViewModel にプロパティを追加できます。EmailController.Create()

于 2012-10-15T22:00:07.840 に答える