MVC動態實現下拉框的方式有很多種,但是方便快捷的卻是很少,現在記錄一種常用的下拉框實現方式:
1.先看看視圖代碼是怎么寫的
<div class="form-group col-xs-12 col-sm-8 col-md-8">
<label class="control-label">這是一個下拉框:</label>
@Html.DropDownList("selectRoleId", ViewData["rolds"] as SelectList, "----請選擇----", new { @class = "form-control" })
</div>
從上代碼可以看出Html自帶屬性去制作,與之不同的是用ViewData去存儲下拉框的數據
2.再看看控制器代碼是怎么寫的
//封裝數據方法
private object EditGetAllRoleIds(string roleId)
{
var selectList = RoleBLL.GetInternalRoles();//取數據集
ViewData["rolds"] = new SelectList(selectList, "RoleId", "RoleName", roleId);//下拉框(保存/顯示)的值,及選擇的值
return ViewData["rolds"];
}
//視圖顯示
public ActionResult Edit(long id)
{
EditGetAllRoleIds(user.RoleId);//加載下拉框
return View(result);
}
//POST操作方法
[HttpPost]
public ActionResult Edit(long id, UserRoleModifyModel model, FormCollection frmcol)
{
EditGetAllRoleIds(model.RoleId);//加載下拉框,這里要調用方法加載,不然post請求數據會報未將對象實例化
model.RoleId = frmcol["selectRoleId"];//獲取用戶選中下拉框的值,巧用FormCollection 控件取ID的value
return View(model);
}
這樣即可動態加載下拉框的數據了.............