2013-05-28 62 views
0

我正在用Razor語法開發MCV應用程序。 我已經將元素傳遞給下拉列表,並且我想將任意隨機項傳遞給視圖,因爲比項目更容易,因此將選擇下拉列表項目。下面的代碼 顯示下拉代碼。如何將隨機項目傳遞給視圖的下拉列表。

控制器代碼

[SessionFilterAction] 
      public ViewResult Details(int id) 
    { 

ViewBag.HODList = new SelectList(db.Employees.Where(e => e.DesignationType == "HOD"), "Id", "FullName"); 
      ViewBag.ItemToBeSelectedInList = 5; 
      return View(paymentadvice); 
    } 

查看代碼

if(ViewBag.DesignationTypeOfLoggedUser == "Staff") 
    { 
     @Html.DropDownList("HODList", String.Empty ,new { ???? }) 
    } 

現在我想用這將在下拉列表中選擇的項目的一個viewbag元素。 如何做到這一點?

回答

1

有要選擇的constructor of the SelectList class,它允許你指定項目的ID:

[SessionFilterAction] 
public ViewResult Details(int id) 
{ 
    int itemToBeSelectedInList = 5; 
    ViewBag.HODList = new SelectList(
     db.Employees.Where(e => e.DesignationType == "HOD"), 
     "Id", 
     "FullName", 
     itemToBeSelectedInList 
    ); 
    return View(paymentadvice); 
} 

這就是說,使用ViewBag是不好的做法,我會建議您切換到使用視圖模型和強類型視圖中的助手。

+0

嘗試同樣的代碼,但不工作....它顯示在默認下拉列表中選擇的第一個項目 – bnil

1

@ Html.DropDownList選擇標記爲Selected(SelectListItem.Selected = true)的項目。 的SelectList構造有自動設置這個標誌爲指定項目:

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue) 

了selectedValue應該是員工的ID,將被選中:

var employees = db.Employees.Where(e => e.DesignationType == "HOD").ToList(); 
var selectedEmployeeId = employess[5].Id; 
ViewBag.HODList = new SelectList(employees, "Id", "FullName", selectedEmployeeId); 
+0

嘗試了相同的代碼,但不工作......它顯示默認情況下在下拉列表中選擇的第一個項目 – bnil

+0

嘗試指定選擇列表到DropDownList幫助器方法:@ Html.DropDownList(「 HODList「,(IEnumerable )ViewBag.HODList) –

+0

It wo RKS ....謝謝... – bnil

相關問題