• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 详解ASP.NET MVC之下拉框绑定四种方式

详解ASP.NET MVC之下拉框绑定四种方式

作者:jeffckyWang 字体:[增加 减小] 来源:互联网 时间:2017-05-11

jeffckyWang通过本文主要向大家介绍了asp net mvc,asp net mvc 4,asp net mvc 5,精通asp.net mvc 5,精通asp.net mvc 4等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC中下拉框中绑定枚举的几种方式。

话题引入

一般在下拉框中绑定数据的话,分为几种情况。

(1)下拉框中的数据是写死的,我们直接给出死代码即可。

(2)下拉框中的数据从数据库中读取出来,从而进行显示。

(3)下拉框中直接用枚举显示。

(4)下拉框中一个选择的值改变另外一个下拉框中的值。

关于下拉框中绑定大概就是以上四种方式,接下来我们一一来破解,我们样式利用Bootstrap来表示,顺便也温习温习Bootstrap。

下拉框硬编码【一】

我们在控制器中给出如下数据并利用ViewBag来进行传递

   ViewBag.hard_value = new List<SelectListItem>() { 
    new SelectListItem(){Value="0",Text="xpy0928"},
    new SelectListItem(){Value="1",Text="cnblogs"}
   };
</div>

在数据中进行如下绑定

 @Html.DropDownList("hard-code-dropdownlist", new SelectList(ViewBag.hard_value, "Value", "Text"), new { @class = "btn btn-success dropdown-toggle form-control" })
</div>

下面我们来看看效果:

下拉框读取数据库【二】

这个要读取数据库,我们就给出一个类测试就ok,并给出默认选中值,测试类:

public class BlogCategory
  {
   public int CategoryId { get; set; }
   public string CategoryName { get; set; }

  }
</div>

绑定ViewBag传值:

//从数据库中读取
   var categoryList = new List<BlogCategory>() { 
    new BlogCategory(){CategoryId=1,CategoryName="C#"},
    new BlogCategory(){CategoryId=2,CategoryName="Java"},
    new BlogCategory(){CategoryId=3,CategoryName="JavaScript"},
    new BlogCategory(){CategoryId=4,CategoryName="C"}
   };
   var selectItemList = new List<SelectListItem>() { 
    new SelectListItem(){Value="0",Text="全部",Selected=true}
   };
   var selectList = new SelectList(categoryList, "CategoryId", "CategoryName");
   selectItemList.AddRange(selectList);
   ViewBag.database = selectItemList;
</div>

视图稍加修改:

@Html.DropDownList("database-dropdownlist", ViewBag.database as IEnumerable<SelectListItem>, new { @class = "btn btn-success dropdown-toggle form-control" })
</div>

看看效果:

中 ViewBag.database 需要进行转换否则出现如下错误:

 CS1973: “System.Web.Mvc.HtmlHelper<dynamic>”没有名为“DropDownList”的适用方法,但似乎有一个具有该名称的扩展方法。扩展方法不能进行动态调度。请考虑强制转换动态参数,或调用该扩展方法但不使用扩展方法语法。

下拉框绑定枚举【三】(一)

 我们同样给出一个测试类:

public enum Language
  {
   Chinese,
   English,
   Japan,
   Spanish,
   Urdu
  }
</div>

获取枚举值并绑定:

 ViewBag.from_enum = Enum.GetValues(typeof(Language)).Cast<Language>();
</div>

视图给出:

@Html.DropDownList("database-dropdownlist", new SelectList(ViewBag.from_enum), new { @class = "btn btn-success dropdown-toggle form-control" })
</div>

继续看看成果:

下拉框绑定枚举【三】(二)

 利用扩展方法  @Html.EnumDropDownListFor 来实现。接下来依次给出两个类来进行演示:

 public class StudentModel
 {
  [Display(Name = "语言")]
  public ProgrammingLanguages Language { get; set; }
 }
</div>
public enum ProgrammingLanguages
 {
  [Display(Name = "ASP.NET")]
  ASPNet,
  [Display(Name = "C# .NET")]
  CSharp,
  [Display(Name = "Java")]
  Java,
  [Display(Name = "Objective C")]
  ObjectiveC,
  [Display(Name = "Visual Basic .NET")]
  VBNet,
  [Display(Name = "Visual DataFlex")]
  VisualDataFlex,
  [Display(Name = "Visual Fortran")]
  VisualFortran,
  [Display(Name = "Visual FoxPro")]
  VisualFoxPro,
  [Display(Name = "Visual J++")]
  VisualJPlus
 }

</div>

在视图中进行绑定:

 <div class="form-group">
  @Html.LabelFor(model => model.Language, htmlAttributes: new { @class = "control-label col-md-2" })
  <div class="col-md-10">
   @Html.EnumDropDownListFor(model => model.Language, htmlAttributes: new { @class = "form-control" })
   @Html.ValidationMessageFor(model => model.Language, "", new { @class = "text-danger" })
  </div>
 </div>
</div>

我们看看结果

下拉框选择则另一个下拉框对应改变 【四】

此例最合适的例子莫过于省市选择的案例。我们一起来看看。

(1)所属省、市一级雇员类。

public class Province
 {
  public int provinceId { get; set; }
  public string provinceName { get; set; }
  public string Abbr { get; set; }
 }
</div>
public class City
 {
  public int CityId { get; set; }
  public string CityName { get; set; }
  public int provinceId { get; set; }
 }
</div>
public class Employees
 {

  [Key]
  public int EmployeeId { get; set; }

  [Required, Display(Name = "雇员名字")]
  public string EmployeeName { get; set; }

  [Required, Display(Name = "地址")]
  public String Address { get; set; }

  [Required, Display(Name = "所属省")]
  public int Province { get; set; }

  [Required, Display(Name = "所在城市")]
  public int City { get; set; }

  [Display(Name = "地区代码")]
  public String ZipCode { get; set; }

  [Required, Display(Name = "联系号码")]
  public String Phone { get; set; }
 }

</div>

(2)初始化数据

List<Province> provinceList = new List<Province>() { 
    new Province(){provinceId=1,provinceName="湖南",Abbr="hunan_province"},
    new Province(){provinceId=2,provinceName="广东",Abbr="guangdong_province"},
    new Province(){provinceId=3,provinceName="吉林",Abbr="jilin_province"},
    new Province(){provinceId=4,provinceName="黑龙江",Abbr="heilongjiang_province"}
   };
&
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET MVC从视图传参到控制器的几种形式
  • ASP.NET MVC 4 中的JSON数据交互的方法
  • ASP.NET MVC制作404跳转实例(非302和200)
  • 详解ASP.NET MVC 利用Razor引擎生成静态页
  • 详解ASP.NET MVC 解析模板生成静态页(RazorEngine)
  • ASP.NET MVC4 利用uploadify.js多文件上传
  • ASP.NET mvc4中的过滤器的使用
  • Asp.net MVC下使用Bundle合并、压缩js与css文件详解
  • 详解Asp.Net MVC——控制器与动作(Controller And Action)

相关文章

  • 2017-05-11HTTP协议下用Web Service上传大文件的解决方案
  • 2017-05-11Asp.net在页面间传递大量数据(数据表)建议采用的方法
  • 2017-05-11GridView导出Excel实现原理与代码
  • 2017-05-11FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
  • 2017-05-11使用.NET中的Action及Func泛型委托深入剖析
  • 2017-05-11asp.net点选验证码实现思路分享 (附demo)
  • 2017-05-11asp.net BackgroundWorker之在后台下载文件
  • 2017-05-11使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法介绍
  • 2018-08-20ASP.NET全栈开发教程之在MVC中使用服务端验证的方法
  • 2017-05-11三种asp.net页面跳转的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • datagrid和repeader控件中替换标识值的方法
    • 从请求管道深入剖析HttpModule的实现机制图文介绍
    • asp.net中使用repeater和PageDataSource搭配实现分页代码
    • 向asp.Net进发 数据库连接操作
    • 服务器安全狗导致ASP.NET网站运行出错的一个案例
    • VS2010制作第一个简单网站
    • 页面包含的处理
    • 在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表
    • asp.net COOKIES需要注意的一点
    • asp.net Coolite 学习交流

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有