2011-10-26 20 views
1

私はASP.Net MVC 3 Webアプリケーションを開発しています。アプリは現在、いくつかのテーブルを持つデータベースに接続されています。そのうちの2つはカテゴリ(catId、Name)とサイト(siteID、Name)です。ASP.Net MVC 3 ViewModelドロップダウンリスト付き

ユーザーが選択してレポートを実行できるように、2つのドロップダウンリストを持つビューを作成したいとします。これを行うには、私はその後、これを取るビューに渡す私は

public ActionResult getEquipmentByCategoryAndSite() 
    { 
     ReportSiteCategorySearchViewModel viewModel = new ReportSiteCategorySearchViewModel 
     { 
      categoryList = new SelectList(categoryService.GetAllCategories().ToList(), "categoryID", "categoryTitle"), 
      siteList = new SelectList(siteService.GetAllSites().ToList(), "siteID", "title") 
     }; 

     return View(viewModel); 
    } 

を以下しているのViewModelを返す私のコントローラで2つのドロップダウンリスト次に

public class ReportSiteCategorySearchViewModel 
{ 
    public SelectList categoryList { get; set; } 
    public SelectList siteList { get; set; } 
} 

を表すためのViewModelを作成しましたViewModelとは、しかし、私はこれはそれを行うための最善の方法であることを確認していない、これが機能するドロップダウン

<div> 
    <label for="ddlSite">Sites</label> 
    @Html.DropDownList("ddlSite", Model.siteList, "All Sites") 
    &nbsp;&nbsp; 
    <label for="ddlCatgeory">Categories</label> 
    @Html.DropDownList("ddlCatgeory", Model.categoryList, "All Categories") 
</div> 

に値を書き出します。私はちょうど私の方法が正しいと思っています、これを行うには良い方法がありますか?つまり、他のテーブルからドロップダウンリストを5/6多く必要とする場合は、現在のviewModelなどに追加するだけですか?

フィードバックは高く評価されます。

ありがとうございます。

答えて

0

List<SelectList>のviewModelを作成することができます。コントローラーで、このモデルに各テーブルを(選択リストとして)追加します。その後、SelectListsのリストであるモデルのビューを渡します。

次に、あなたのビュー内の各値を反復処理することができます

<div> 
@foreach(SelectList SL in Model) 
{ 
    <label for="ddl"+SL>SL.Title</label> 
    @Html.DropDownList("ddl"+SL.Title, sl.list, sl.items") 
} 

あなたは「タイトル」や「アイテムのフィールドを含めるようにSelectListのあなたのリストを変更する必要があるかもしれません。このようにすることで、Listに要素を追加し続けることができ、ビューを更新する必要はありません。

関連する問題