MVC 4 で「新規作成」ページを作成しようとしています。ページにはテキスト フィールドとドロップダウン フィールドがあります。ドロップダウン ボックスにリストされている項目を別のモデルから取得したいと考えています。
メイン モデル: (次のコードは一般的な例であるため、構文は無視してください)
public int MainID {get; set;}
public int location {get; set;}
...
モデル:
public int detailID {get; set;}
public int MainID {get; set;}
...
public int actionID {get; set;}
アクション モデル:
public int actionID {get; set;}
public int location {get; set;}
public string action {get; set;}
SomeDetails
に関する追加情報が含まMain
れており、 を使用してリンクされてmainID
います。の「詳細の追加」ページの作成に関心がありますsomeDetails
。このページの一部には、 のフィールドにAction
基づくドロップダウンが含まれます。location
main
ドロップダウン ボックスを実装する最良の方法は何でしょうか? ViewBag で可能な値を渡すことを含む解決策がありますが、このラベル付けされた悪い習慣を見てきました。public int actionID {get; set;}
のタイプに変更できるのではないかと私も考えていました<List>Action
。このメソッドを実行する場合、リストを作成するためのコンストラクターが必要だと思いますsomeDetails
か? someDetails
毎回リストを作成しようとするため、特定のものを表示するだけでパフォーマンスの問題が発生しますか?
アクションを作成:
public ActionResult Create(int id = -1)
{
if (id == -1)
{
//NOTE: INSERT REDIRECT HERE
}
someDetails model = new someDetails();
model.MainID = id;
return View(model);
}
編集:要求に応じて、ビジネスロジックのより良い説明main model
私が示したものは、私のコントロール/グループの外にあるデータウェアハウスの一部であるため、変更できない既存のテーブルをモデルにしています。someDetails
このデータの一部の可視性/追跡を向上させるために、ユーザーが追加できるアプリケーションを作成しています。モデルはAction
、場所に基づいて可能なアクション/actionID を表示するだけです。
私のアプリケーションでは、ユーザーがmain
モデルから一連の項目を検索またはフィルター処理できるようにします。someDetails
次に、アクションを選択するためのテキスト フィールドとドロップダウン リストを含むフォームを表示する追加を許可します。の可能な値を取得するにはaction
、次のようにしますSELECT * FROM Action a WHERE a.location = currentLocation