一.静态下拉列表项的绑定

在下拉列表中绑定静态项,我们可以通过 SelectListItem 的集合作为数据源的下拉列表。
     @Html.DropDownList("dropRoles", new List<SelectListItem>()
{
new SelectListItem() { Text= "Yes", Value = "true" },
new SelectListItem() { Text= "No", Value = "false", Selected = true }
}, "Select ..."),new { @class = "myClass", style = "width: 250px;" })

在上面的代码片段中,

第一个参数是下拉列表中的名称;

第二个参数是 SelectListItem 要用作数据源的下拉列表中的集合和第三个参数是默认值,如果将选中"选择 = true"不在任何的 SelectListItem 中指定。

第三个参数是在下拉列表中显示的默认默认空项。

第四个参数是写入下拉列表中的样式/类或其他 HTML 属性( htmlObjectAttributes)。

二、绑定多个表数据

@Html.DropDownList("MultipleTables", ViewBag.Roles as SelectList)

控制器操作方法代码

var data = from p in db.PersonalDetails
join f in db.Files
on p.AutoId equals f.PersonalDetailsId
select new
{
PersonName = p.FirstName,
MyFileName = f.FileName
}; SelectList list = new SelectList(data, "MyFileName", "PersonName");
ViewBag.Roles = list;

在上面的代码片段中,我们加入了两个表使用 LINQ,形成具有到 PersonName 和 MyFileName 属性的对象。转换成通过指定dataTextFileld dataValueField 的下拉列表。

 此时集合然后被设置为 ViewBag.Roles,用作数据源的下拉列表中的视图。
 

三、在下拉列表中绑定模型

在下拉列表中绑定一个模型属性,使用下面的代码片段。
public IEnumerable<SelectListItem> Categories { get; set; }
在该控制器的操作方法中设置此属性值,
model.Categories = db.CategoryModels.Where(c => c.SectionId == sectionId &&
c.Active == true).OrderBy(ct => ct.CategoryName).ToList().
Select(x => new SelectListItem { Value = x.CategoryId.ToString(), Text = x.CategoryName }).ToList();

在上面的代码片段中,注意第三行的代码中,是从列表中选择的所有项目,创建SelectListItem 对象所指定的值为类别 id 和类别名称作为文本。

 
当此集合有界的下拉列表中时,类别 id 作为项的值和类别名称用作下拉列表项的文本。
四、更改下拉列表项的回发

在 ASP.NET MVC 中的窗体中更改下拉列表项自动回发,我们可以在 htmlObjectAttributes 中这样指定 onchange 属性。

@Html.DropDownList("MultipleTables", ViewBag.Roles as SelectList, "Select ...",
new { @class = "myClass", style = "width: 250px;", onchange = "this.form.submit();" })

在上面的代码片段,onchange 属性会迫使该窗体以提交它在服务器上,当用户更改下拉列表中的选定内容。

 
本文参考:http://www.dotnetfunda.com/articles/show/2918/working-with-dropdownlist-in-aspnet-mvc
相关资源:http://www.cnblogs.com/kirinboy/archive/2009/10/28/use-dropdownlist-in-asp-net-mvc.html

Asp.net MVC5中Html.DropDownList的使用的更多相关文章

  1. ASP.NET MVC5中的数据注解

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  2. asp.net mvc5中使用缓存依赖SqlCacheDependency

    缓存是用来提高应用性能,降低服务器压力.适用于数据不易变,数据易通用的情景, 对于动态查询数据,例如数据分析,最好放弃使用缓存.使用缓存最麻烦的就是保持源数据和缓存的中的数据一致. 缓存(Cache) ...

  3. asp.net mvc5中的过滤器重写

    asp.net mvc5中增加了一种过滤器类型叫过滤器重写,这种过滤器类型可以在操作或者控制器上忽略更高层次上设置的过滤器类型,它可以重写五种基本的过滤器接口类型:IAuthenticationFil ...

  4. ASP.NET MVC5中的数据注解(转载)

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  5. 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...

  6. [摘]在ASP.NET MVC中使用DropDownList

    在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...

  7. ASP.NET MVC中使用DropDownList

    在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...

  8. [转]在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    本文转自:http://www.cnblogs.com/powertoolsteam/p/MVC5_GridView_2.html 背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5 ...

  9. 译:在ASP.NET MVC5中如何使用Apache log4net 类库来记录日志

    译文出处:http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET-MVC 在 ...

随机推荐

  1. Mysql 复制表结构 及其表的内容

    顺便转一下Mysql复制表结构.表数据的方法: 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们 ...

  2. CSS3旋转图片效果收集

    火狐中文网图片效果: [http://i.firefoxchina.cn/?www.firefoxchina.cn] .news-img-wrapper:hover img {     transfo ...

  3. 带CheckBox的TreeView网上出错问题解决办法

    问题描述:TreeView上传到服务器,预览效果发现节点图片不显示.展开合并功能缺失.解决办法: 以下是我个人的解决办法,最终的效果实现了,但是还有一点点小遗憾,就是页面上有基于微软的调用js的报错信 ...

  4. xUtils的文件下载与安装,xUtils的文件上传

    开篇报错注意:本教程是基于xUtils-2.6.14.jar版本实现的 由于studio中6.0以后安卓取消了httpclient,而xutils则基于httpclient开发的,所以现在无法使用,将 ...

  5. 从C# String类理解Unicode(UTF8/UTF16)

    上一篇博客:从字节理解Unicode(UTF8/UTF16).这次我将从C# code 中再一次阐述上篇博客的内容. C# 代码看UTF8 代码如下: string test = "UTF- ...

  6. Ubuntu14.04配置arm-linux-gcc 4.4.3交叉编译环境

    首先下载交叉编译:不多说,直接贴地址了 http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.g ...

  7. Install cv2.so for Anaconda

    sudo apt-get install python-opencv cp /usr/lib/python2.7/dist-packages/cv2.so /opt/anaconda/lib/pyth ...

  8. (原+转)error C2872: “ACCESS_MASK”: 不明确的符号 C:\Program Files (x86)\Windows Kits\8.1\Include\um\ktmw32.h 125

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5500795.html 参考网址: http://www.lxway.com/88515256.htm ...

  9. 2015.4.2-SQL 简单语句(一)

    1.创建一个student表 create table student_masen( sno char(4) not null primarykey sname nchar(10) not null ...

  10. [转]MySQL 5.6 全局事务 ID(GTID)实现原理(三)

    原文连接:http://qing.blog.sina.com.cn/1757661907/68c3cad333002s5l.html 原文作者:淘长源 转载注明以上信息 这是 MySQL 5.6 全局 ...