在asp.net MVC中下拉列表可以说是最常用的一种控件.绑定方法,也很简单.可是我们在做修改或是查询的时候,会要求这个下拉列表框当前选中的值,是我刚才选择的或是数据库存的值,这怎么办呢.这就要用SelectList这个类了.这个类一共有四种方法.
分别是以下这四种方法,我们一般比较常用的方法是,前二种,如果想要做到反显,哪么我们用到的就是第四种方法.
名称 | 说明 |
---|---|
SelectList(IEnumerable) | 使用列表的指定项来初始化 SelectList 类的新实例。 |
SelectList(IEnumerable, Object) | 使用列表的指定项和选定的值来初始化 SelectList 类的新实例。 |
SelectList(IEnumerable, String, String) | 使用列表的指定项、数据值字段和数据文本字段来初始化 SelectList 类的新实例。 |
SelectList(IEnumerable, String, String, Object) | 使用列表的指定项、数据值字段、数据文本字段和选定的值来初始化 SelectList 类的新实例。 |
好了,不多说,上代码.
Controllers层
public ActionResult Index() { //这里我是的一个条件 string Scode = "|1||3|"; //根据选择的下列框值,来确定条件 if (!string.IsNullOrEmpty(Request.Form["organsList"])) { Scode = Request.Form["organsList"].ToString(); } //取出机构列表,将他做成下拉列表的形式,db是model层的类 IEnumerable<Eorgans> organs = db.organsList(); //SelectList第四个参数是用来设置被选中项的,在View页面中Html.DropDownList("organsList")下拉列表中的名字必须与ViewData相同,这样就可以了 ViewData["organsList"] = new SelectList(organs, "sortcode", "or_name", Scode); //取出学校列表,默认是根节点 IEnumerable<Eorgans_school> Eor_schoollist = db.organs_schoolList(Scode); return View(Eor_schoollist); }
<body> <table> <tr> <td colspan="4"> <form action="/School/Index" method="post"> <%= Html.DropDownList("organsList")%> <input id="Submit1" type="submit" value="查询" /> </form> </td> </tr> <tr> <th></th> <th> 机构表 </th> <th> 学校ID </th> <th> 学校代码 </th> <th> 学校名称 </th> </tr> <% foreach (var item in Model) { %> <tr> <td> <%= Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %> | <%= Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })%> | <%= Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })%> </td> <td> <%= Html.Encode(item.or_Name) %> </td> <td> <%= Html.Encode(item.number) %> </td> <td> <%= Html.Encode(item.schoolCode) %> </td> <td> <%= Html.Encode(item.schoolName) %> </td> </tr> <% } %> </table> <p> <%= Html.ActionLink("Create New", "Create") %> </p> </body>