我們先在控制器中准備好一個SelectList類型,然后通過ViewBag.List傳入視圖中。SelectList類型是ASP.NET MVC專門為列表有關的HTML輔助方法提供選項的,例如,Html.DropDownList()、Html.ListBox()都可以使用。
1 public ActionResult HelperDropDownList() 2 { 3 List<SelectListItem> listItem = new List<SelectListItem>{ 4 new SelectListItem{Text="是",Value="1"}, 5 new SelectListItem{Text="否",Value="0"} 6 }; 7 ViewBag.List = new SelectList(listItem,"Value","Text",""); 8 return View(); 9 }
然后在視圖中就可以創建下拉列表了。
@Html.DropDownList("List", ViewBag.List as SelectList, "請選擇")
渲染的HTML是這樣的:
1 <select name="List" id="List"> 2 <option value="">請選擇</option> 3 <option value="1">是</option> 4 <option value="0">否</option> 5 </select>
還有,若是后台數據使用ViewData傳到視圖時,可以這樣寫:
1 //后台用ViewData傳值到頁面,或者用ViewBag 2 public ActionResult HelperDropDownList() 3 { 4 List<SelectListItem> listItem = new List<SelectListItem>{ 5 new SelectListItem{Text="是",Value="1"}, 6 new SelectListItem{Text="否",Value="0",Selected=true} 7 }; 8 //ViewBag.List = new SelectList(listItem, "Value", "Text", ""); 9 ViewData["List"] = new SelectList(listItem, "Value", "Text", ""); 10 return View(); 11 }
1 @using (Html.BeginForm("DropDownValue","Home")) 2 {
//只需將第一個參數寫成對應的ViewData索引即可,或者對應的ViewBag索引 3 @Html.DropDownList("List","請選擇") 4 <div> 5 <input type="submit" value="提交" /> 6 </div> 7 }
--------------------------------------------------------------------------------------------------------------
那么,在視圖頁面的下拉列表被選擇的值怎么傳到Controlloer的方法進行處理呢?可以這樣:
1 @using (Html.BeginForm("DropDownValue","Home")) 2 { 3 @Html.DropDownList("List", ViewBag.List as SelectList, "請選擇") 4 <div> 5 <input type="submit" value="提交" /> 6 </div> 7 8 }
將下拉列表置於表單當中,當表單提交時,被選中的值就被提交到控制器方法。
1 public ActionResult DropDownValue(string List) 2 { 3 ViewBag.Result = List; 4 return View(); 5 }
注意接受值的方法的參數名稱與html標簽的id保持一致性。