一、一般变量或对象的绑定

首先要在controller 中将选项设置成 selecList对象,并赋值给viewBag动态对象。

public ActionResult Index(string movieGenre,string searchString)
{
var GenreLst = new List<string>();
var GenreQry = from d in db.Movies
orderby d.Genre
select d.Genre;
GenreLst.AddRange(GenreQry.Distinct());
ViewBag.movieGenre = new SelectList(GenreLst);

var movies = from m in db.Movies
select m;
if (!string.IsNullOrWhiteSpace(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));

}

if (!string.IsNullOrWhiteSpace(movieGenre))
{
movies = movies.Where(x => x.Genre == movieGenre);

}
return View(movies.ToList());
}

在View中有两种用法

1、@Html.DropDownList("movieGenre", "All")   name=movieGenre,  自动读取viewBag.movieGenre 数据,也就是说会自动查找ViewBag对象的IEnumerable<SelectListItem >值。第二个参数下拉框是第一行显示的数据。

或者@Html.DropDownList("movieGenre",null,new { @class="form-control"})

2、 @Html.DropDownList("movieGenre", ViewBag.movieGenre as SelectList,"全部", new { @class="form-control"})

@using (Html.BeginForm("Index", "Movie", FormMethod.Get, htmlAttributes: new { @class = "form-inline", role = "form" }))
{
<div class="form-group">
<label class="control-label" for="movieGenre">类别:</label>
</div>
<div class="form-group">
@Html.DropDownList("movieGenre", ViewBag.movieGenre as SelectList,"全部", new { @class="form-control"})
</div>
<div class="form-group">
<label for="searchString" class="control-label">&nbsp;&nbsp;片名:</label>
</div>
<div class="form-group">
@Html.TextBox("searchString", "", htmlAttributes: new { @class = "form-control", placeholder = "请输入片名" })
</div>
<input type="submit" value="查找" class="btn btn-primary" />
}

截图如下:

二、 如果是bool类型变量的绑定到下拉框,也可以设置成下拉框的形式,选项分别为 全部,为真,为假。

控制器:

public async Task<ActionResult> Index(string departmentID,string userRealName,bool? inCollege)

{

if (inCollege != null)
{
_users = _users.Where(u => u.InCollege == inCollege);
}

List<SelectListItem> listItem = new List<SelectListItem>();
listItem.Add(new SelectListItem { Value = true.ToString(), Text ="校内" });
listItem.Add(new SelectListItem { Value = false.ToString(), Text = "校外" });
ViewBag.InCollegeList = new SelectList(listItem, "Value", "Text");
ViewBag.CurrentinCollege = inCollege;

}

视图:

<text>&nbsp;&nbsp;</text>

<label for="inCollege" class="control-label">校内或者校外:</label>
<div class="form-group">
@Html.DropDownList("inCollege", ViewBag.InCollegeList as SelectList, "全部", new { @class = "form-control" })
</div>

三、也可以直接在视图中指定bool值。

@Html.DorpdownListFor(x =>x.inCollege,new[] {new SelectListItem{ Value=bool.TureString,Text="校内"},

new SelectListItem{Value=bool.FalseString,Text="校外"}

},"请选择")

四、也可以将枚举类型的绑定到下拉框中。

将枚举类型的值字符串作为传递参数,

控制器:

public ActionResult Index(string courseID, string resourceArrtibute, string searchTitle)
{
List<string> _resourceAttributeList = new List<string>();
_resourceAttributeList.AddRange(Enum.GetNames(typeof(ResourceArrtibute))); //通过Enum.GetNames(typeof(枚举类型))的值转换为字符串,并添加到List 泛型对象。
ViewBag.ResourceArrtibute = new SelectList(_resourceAttributeList, resourceArrtibute);  //返回所有枚举类型的值,并设定默认值。

ViewBag.SearchTitle = searchTitle;

List<Course> courses = new List<Course>();
var courseListQuery = from r in _resourceService.FindAll().Include(r =>r.Course)
select r.Course;
courses.AddRange(courseListQuery.Distinct().OrderBy(c =>c.CourseName));

ViewBag.CourseID = new SelectList(courses, "CourseID", "CourseName", courseID);
var resources = _resourceService.FindAll().Include(r => r.Course);
if(!string.IsNullOrEmpty(courseID))
{
resources = resources.Where(r => r.CourseID == courseID);

}

if (!string.IsNullOrEmpty(resourceArrtibute))
{
resources = resources.Where(r => r.ResourceArrtibute.ToString() == resourceArrtibute); //利用枚举类型的值的ToString()方法将枚举实例值转换为等效的字符串形式。

}

if (!string.IsNullOrEmpty(searchTitle))
{
resources = resources.Where(r => r.ResourceName.Contains(searchTitle));

}

return View(resources.ToList());
}

视图:

@using (Html.BeginForm("Index", "Resource", FormMethod.Get, new { @class = "form-inline", role = "form" }))
{
<label for="CourseID" class="control-label">课程名称:</label>
<div class="form-group">
@Html.DropDownList("CourseID",null,"全部课程", new { @class="form-control" })
</div>

<label for="ResourceArrtibute" class="control-label">资源类型:</label>
<div class="form-group">
@Html.DropDownList("ResourceArrtibute", null, "全部类型", htmlAttributes: new { @class = "form-control" })  //将字符串形式的selectlist对象绑定到下拉菜单上。
</div>

<label for="searchTextbox" class="control-label"> 通过资源标题查找:</label>
<div class="form-group">
@Html.TextBox("SearchTitle", ViewBag.SearchTitle as string, new { @class = "form-control" })
</div>

<input type="submit" value="查找" class="btn btn-primary" />

}

枚举类型的变量绑定详细可参见博客园另一篇文章

http://www.cnblogs.com/liuyuanhao/p/4510382.html

MVC视图中下拉框的使用的更多相关文章

  1. MVC中下拉框显示枚举项

    原文:MVC中下拉框显示枚举项 本篇将通过3种方式,把枚举项上的自定义属性填充到下拉框: 1.通过控制器返回List<SelectListItem>类型给前台视图 2.通过为枚举类型属性打 ...

  2. flex中下拉框的实现

    flex中下拉框的实现 <mx:ComboBox id = "combobox" dataProvider = "{deviceCodeType }" e ...

  3. MVC 实现下拉框

    MVC动态实现下拉框的方式有很多种,但是方便快捷的却是很少,现在记录一种常用的下拉框实现方式: 1.先看看视图代码是怎么写的 <div class="form-group col-xs ...

  4. ligerUI---ligerForm中下拉框使用

    写在前面: 最近项目的前框框架用的是ligerUI,一开始我是拒绝的,因为貌似ligerUI很少有人用,我真的很想问我们team的斌哥哥为什么要用ligerUI来做前端框架?????(啊哈哈哈,用什么 ...

  5. DevExpress GridControl 中下拉框联动效果的实现(及支持文本框录入情况)

    先解释一下标题: grid中的某一列默认为文本框,根据需要动态的变更为下拉框,且支持动态变更数据源 需求是这样的: 有一些参数(A),这些参数又分别对应另外的参数(B),所以,先把A作为一列,B根据A ...

  6. spring mvc 建立下拉框并进行验证demo

    原文出处:http://howtodoinjava.com/spring/spring-mvc/spring-mvc-populate-and-validate-dropdown-example/ 该 ...

  7. 选择屏幕中的下拉框和dialog中下拉框设计

    REPORT  YTEST014. PARAMETERS: auart LIKE vapma-auart  AS LISTBOX   VISIBLE LENGTH 6. AT SELECTION-SC ...

  8. 帝国cms中下拉框select的绑定

    在修改数据模型中,将下拉框的表示代码换成下: 将id换成自己的id地址.数据库查询中的classid换成自己创建栏目的id. <select name="diqu" id=& ...

  9. jQuery中下拉框select的操作方法详解

    最近在写页面的时候常常遇到要动态增删改下拉框select的情况,由于我比较习惯用jquery框架来架构我的前端js,所以就顺便把各种jquery操作下拉框select的方法总结了一下,收藏起来以便下次 ...

随机推荐

  1. msp430项目编程10

    msp430中项目---电子密码锁 1.扫描键盘工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习

  2. msp430入门编程45

    msp430中C语言的人机交互--独占CPU菜单

  3. canvas跟随页面滑动后准确定位到真实坐标

    先来了解一个属性: getBoundingClientRect() 这个方法返回一个矩形对象,包含四个属性:left.top.right和bottom.分别表示元素各边与页面上边和左边的距离. var ...

  4. neo4j在linux下的安装

    1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...

  5. windows上安装mysql

    安装mysql后 命令行闪退 查看服务 也没有MySQL服务启动 你安装了mysql没有,没有就先安装,安装好mysql以后,在bin目录下有个mysqld.exe,运行这个程序就可以添加mysql服 ...

  6. foobar2000实现用手机远程控制PC命令行版

    实现此功能主要是在手机上使用Telnet命令实现下一首播放. 1.安装Telnet守护进程插件:http://www.foobar2000.org/components/view/foo_telnet ...

  7. [转]linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    原文:http://www.jb51.net/LINUXjishu/43356.html ------------------------------------------------------- ...

  8. form怎样正确post文件

    form在HTML中,是用于收集用户输入的,基本全部浏览器都支持form.给form加入method属性.就能实现将用户在form内控件输入的信息POST到制定地址.或发送GET请求. 写了以下一段代 ...

  9. MySQL基础笔记(三) 复杂查询

    所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...

  10. BZOJ 1122 POI2008 账本BBB 单调队列

    题目大意:给定一个由+1和−1构成的长度为n的序列,提供两种操作: 1.将某一位取反,花销为x 2.将最后一位移动到前一位.花销为y 要求终于p+sumn=q.且p+sumi≥0(1≤i≤n),求最小 ...