在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);
}
View层
<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>