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

首先要在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. vue.js基础知识总结

    初始化一个项目 npm init -y 安装一些依赖 npm install 名称 --save 例如 npm install vue axios bootstrap --save --save 表示 ...

  2. poj1308+HOJ1325,判断是否为树

    POJ 应该是判断是否为简单无环连通图,用并查集直接秒杀即可,而HOJ的是有向树,还需判断所有点的入度必需小于2,用一个类似hash[]数组判断一下即可, ////判断树之一:入度<=1:三:点 ...

  3. python学习之-- redis模块操作 HASH

    redis 操作 之 -Hash Hash 操作:hash在内存中的存储格式 name hash n1 ------> k1 -> v1 k2 -> v2 k3 -> v3hs ...

  4. [转] Oracle数据库维护常用SQL语句集合

           原文地址 进程相关: 1. 求当前会话的SID,SERIAL# SELECT Sid, Serial# FROM V$session WHERE Audsid = Sys_Context ...

  5. 从日志文件解决ArcGIS Server性能低下问题的步骤(1)

    日志级别和结构 http://www.cnblogs.com/fortoday/archive/2011/03/30/2000348.html ArcGIS Server日志文件分为几个记录级别: 无 ...

  6. javascript 自定义错误处理

    php 中是可以自定义程序的错误和异常处理函数的(handler).于是,我在想,javascript 中是否也存在和PHP中一样的异常和错误处理函数呢? try{}catch(){} 这种捕捉异常和 ...

  7. md5sum使用注意事项

    1. linux 命令行的 md5sum命令 echo -n "123456" | md5sum     //echo的时候, 默认是自带回车的, 必须要去掉 -n 去掉回车. 2 ...

  8. Linux性能诊断工具

    vmstat:虚拟内存状况 –swpd   free  buff  cache   si  so   in   cs 參考:http://www.cnblogs.com/ggjucheng/archi ...

  9. Office EXCEL 如何设置最大行高

    对于单个单元格行来说,行高必须在0-409之间   但是如果合并了两个单元格,则行高就扩展了一倍,不止409,而是两倍的409.

  10. 海思HI3516A开发板顺利上线

    有图有真相.