2016-11-27 6 views
0

ViewBag変数を使用して入力されるドロップダウンリストがあります。このリストの選択されたインデックスをid値を使用して設定する方法が不思議です。これは、ビューのドロップダウンで選択した値を持つHtml.DropdownList

var events = db.Events.Select(e => new 
      { 
       id = e.EventID, 
       Name = e.EventTitle 

      }).OrderBy(e => e.Name).ToList(); 
      ViewBag.EventsList = new MultiSelectList(events, "id", "Name"); 

私はViewBag変数を作成する場所ですが、IDに注意してください、これは私がリストにデフォルト選択した項目を設定するために使用するものです

@Html.DropDownList("id", (MultiSelectList)ViewBag.EventsList, new { @class = "form-control", id = "lstTopFeaturedEvent" }) 

コントローラに設定されたidプロパティを使用してデフォルトの選択値を設定できましたか?

+1

セットをモデルをビューに渡す前に、GETメソッドのプロパティ 'id'の値を取得してください(そして' ViewBag.EventsList = new SelectList(db.Events、 "EventID"、 "EventTitle"); ') –

答えて

1

ビューモデルを使用し、ViewBagを忘れてください。存在しないかのように考えてください。どのように簡単になるかがわかります。だから、ビューモデル定義:

public class MyViewModel 
{ 
    public int SelectedCategoryId { get; set; } 
    public IEnumerable<SelectListItem> Categories { get; set; } 
} 

をしてから、コントローラから、このビューモデル移入:

public ActionResult NewsEdit(int ID, dms_New dsn) 
{ 
    var dsn = (from a in dc.dms_News where a.NewsID == ID select a).FirstOrDefault(); 
    var categories = (from b in dc.dms_NewsCategories select b).ToList(); 

    var model = new MyViewModel 
    { 
     SelectedCategoryId = dsn.NewsCategoriesID, 
     Categories = categories.Select(x => new SelectListItem 
     { 
      Value = x.NewsCategoriesID.ToString(), 
      Text = x.NewsCategoriesName 
     }) 
    }; 
    return View(model); 
} 

、最終的にはあなたのビューで強くDropDownListForヘルパー型付けされた使用:

@model MyViewModel 

@Html.DropDownListFor(
    x => x.SelectedCategoryId, 
    Model.Categories 
) 
関連する問題