いくつかの用語が混乱しているようです。コントローラ クラスでコントローラ アクションをコーディングすると、ルーティング エンジンが URL に基づいて呼び出すコントローラ アクションを決定します。たとえば、デフォルトのアクションを持つHomeController
クラスがある場合、次のようになります。Index
public ActionResult Index()
{
// code here
}
これは、次のような URL でサイトにアクセスした場合、デフォルトのルーティングで呼び出されます (たとえば、次のwww.mysite.com
URL でサイトにアクセスできるとします:
http://www.mysite.com/Home
これによりIndex
、コントローラーでアクションを実行できます。
通常、ビュー モデルを使用して UI 側で使用し、エンティティからビュー自体に必要なデータを入力します。TTSite
とのような 2 つのエンティティがある場合、(非常に単純な) 例として、次のようServer
にビュー モデルを設定します。Sites
public ActionResult Index()
{
var servers = yourDbContext.Servers.ToList();
var ttSite = yourDbContext.TTSites.GetByID(1); // retrieve one entity by its ID value, this would be acquired dynamically based on some sort of user input rather than hard-coded
var viewModel = new Sites(servers);
viewModel.TTSite = ttSite;
return View(viewModel);
}
ドロップダウンの作成に関するものは何も含めていません。データをビュー モデルに取得し、そのビュー モデルでビューを作成する方法を示しているだけです。
Sites
クラスをエンティティとしてではなくビュー モデルとして使用し、データベースのエンティティに基づいてそのデータを設定することに注意してください。ビュー モデル クラスに主キーを設定することはありません。TTSite
これらはデータ モデルの問題であり、データ レイヤーで使用可能な方法でこれらのエンティティ ( など) を既に設定していると思われます。
コントローラー アクションとビューが動作するようになったら、ビュー モデル データをドロップダウン リストで使用できる形式に変換し、そこから先に進むことができます。