2017-02-20 20 views
-1

なぜモデルバインダーが編集モードでドロップダウンリストで機能しないのですか?編集ビューでasp.net mvcモデルバインダーが編集モードのドロップダウンリストで機能しない

私はこのコードとテスト二つの異なるDDL書く:

@Html.DropDownList("ProductParentCategoryId", null, htmlAttributes: new { @class = "form-control" }) 
@Html.DropDownListFor(model => model.ProductParentCategoryId, (SelectList)ViewBag.ParentId) 

と私のコントローラで

ViewBag.ProductParentCategoryId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle"); 
ViewBag.ParentId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle"); 

が、編集モード内のすべてのテキストボックスモデルバインダーを埋めるが、ドロップのために起きていないがダウンリスト。

なぜですか?私が意味する enter image description here

------- -------更新

は...編集モード、モデルバインダーのバインドテキストボックスに、データベースからすべてのデータと、各要素である が、中ドロップダウンリストモデルバインダーはデータベースからデータをバインドしません。選択値をドロップダウンリスト

答えて

0

私は私の解決策 行われるべき唯一のものを見つけます

[http Get] 
    public ActionResult Edit(int id) 
    { 
     var selectedId = _productCategoryService.GetOneProductCategory(id); 

     ViewBag.ProductParentCategoryId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle", (int)selectedId.ProductParentCategoryId); 
     ViewBag.GroupFiltersId = new SelectList(_groupFiltersService.GetAllGroupFilter().Where(a => a.GroupFilterParentId == null), "GroupFilterId", "GroupFilterTitle"); 
     return View(_productCategoryService.GetOneProductCategory(id)); 
    } 

ビュー:

私のコントローラで
@Html.DropDownList("ProductParentCategoryId", null, htmlAttributes: new { @class = "form-control" }) 
0

ビューモデルにバインドし、ViewBagを使用しないことをお勧めします。

質問に答えるには、最初の例では、null値を渡したドロップダウン(2番目のパラメータ)を代入するための項目を渡さなかった。

また、私はいつもSelectListコレクションではなく IEnumerable<SelectListItem>を使用しています。

だからあなたのビューモデルにあなたのようなプロパティを作成することができますpublic IEnumerable<ProductCategory> ProductCategories {get; set;}と、次のようにあなたのドロップダウンにバインド:

Html.DropDownListFor(m => m.ProductCategoryId, Model.ProductCategories) 

https://msdn.microsoft.com/en-us/library/gg548304(v=vs.111).aspx

関連する問題