测试环境:vs2013、.Net4.5、mvc5

一、Asp.Net MVC绑定控件原理说明

以Html.TextBox为例

        /// <param name="name">名称,对应name和ID</param>
/// <param name="value">value值,如果value为null或不存在,那么此时value自动等于name。获取的顺序为:先从ViewData中查找是否存在键值为name值的项,如果ViewData中没有则从ViewData.Model中查找是否存在名称为name值的属性,如果仍然不存在,则返回null。</param>
/// <returns></returns>
public static MvcHtmlString TextBox(string name, object value);

控制器代码:

ViewData["name"] = "张三";

视图代码:

@Html.TextBox("name")

编译代码:

<input id="name" name="name" type="text" value="张三" />
//把ViewData["name"]值自动绑定到value

同理可绑定的还有:label、RadioButton、CheckBox、TextArea、Hidden等input标签控件

DropDownList与texttbox等原理一样,但是DropDownList的选项需要是集合而不是一个字符串值,所以需要用一下方法绑定

二、Asp.Net MVC绑定DropDownList

  1、方法1:List<SelectListItem>常规绑定法

controller代码:

List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "篮球", Value = "" });
items.Add(new SelectListItem { Text = "足球", Value = "",Selected=true });
items.Add(new SelectListItem { Text = "台球", Value = "" });
ViewData["ddlQiu"] = items;

view代码:

@Html.DropDownList("ddlQiu")

编译代码:

<select id="ddlQiu" name="ddlQiu">
<option value="1">篮球</option>
<option selected="selected" value="2">足球</option>
<option value="3">台球</option>
</select>

  2、方法2:SelectList对象绑定法

ASP.NET MVC为DropDownList和ListBox(都在html中使用select标记)准备了一个辅助类型:SelectList。

SelectList继承自MultiSelectList,而后者实现了IEnumerable<SelectListItem>。也就是说,SelectList可以直接作为Html.DropDownList方法的第二个参数。

MultiSelectList包含四个属性,分别为:

  • Items:用于在select标记中出现的列表,通常使用option标记表示。IEnumerable类型。
  • DataTextField:作为option的text项,string类型。
  • DataValueField:作为option的value项,string类型。
  • SelectedValues:选中项的value值,IEnumerable类型。

controller代码:

var listCity = db.City.Where(x => x.ParentId == );
var ddlList = new SelectList(listCity, "id", "name", ""); ViewData["ddlCity"] = ddlList;

voew代码:

@Html.DropDownList("ddlCity")

编译代码:

<select id="ddlCity" name="ddlCity">
<option value="1">北京</option>
<option value="2">天津</option>
<option value="3">河北省</option>
<option value="4">山西省</option>
<option value="5">内蒙古自治区</option>
<option value="6">辽宁省</option>
<option value="7">吉林省</option>
<option value="8">黑龙江省</option>
<option selected="selected" value="9">上海</option>
<option value="10">江苏省</option>
<option value="11">浙江省</option>
<option value="12">安徽省</option>
<option value="13">福建省</option>
<option value="14">江西省</option>
<option value="15">山东省</option>
<option value="16">河南省</option>
<option value="17">湖北省</option>
<option value="18">湖南省</option>
<option value="19">广东省</option>
<option value="20">广西壮族自治区</option>
<option value="21">海南省</option>
<option value="22">重庆</option>
<option value="23">四川省</option>
<option value="24">贵州省</option>
<option value="25">云南省</option>
<option value="26">西藏自治区</option>
<option value="27">陕西省</option>
<option value="28">甘肃省</option>
<option value="29">青海省</option>
<option value="30">宁夏回族自治区</option>
<option value="31">新疆维吾尔自治区</option>
<option value="33">香港特别行政区</option>
<option value="34">澳门特别行政区</option>
<option value="3525">国外</option>
</select>

//两种方法都可以,喜欢哪个用哪个

Asp.Net MVC绑定DropDownList等控件的更多相关文章

  1. ASP.NET MVC 中使用用户控件——转

    讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件,   我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...

  2. 在Asp.Net MVC中使用Repeater控件

    使用Repeater控件在视图中展示图表信息,Repeater控件的使用概述: <asp:Repeater ID="Repeater1" runat="server ...

  3. ASP.NET MVC加载用户控件后并获取其内控件值或赋值

    有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不 ...

  4. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  5. asp.net mvc中DropDownList

    asp.net mvc中DropDownList的使用. 下拉列表框 以分为两个部分组成:下拉列表和默认选项 DropDownList扩展方法的各个重载版本基本上都会传递到这个方法上:   publi ...

  6. ASP.NET的面包屑导航控件、树形导航控件、菜单控件

    原文:http://blog.csdn.net/pan_junbiao/article/details/8579293 ASP.NET的面包屑导航控件.树形导航控件.菜单控件. 1. 面包屑导航控件— ...

  7. winform快速开发平台 -> 快速绑定ComboBox数据控件

    通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...

  8. EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor

    Grid 根据数据源某列数据不同绑定不同的控件,例如:文本框和下拉框 主要代码写在grid的  plugins: [rowEditing],下面这是定义的rowEditing对象,这里面的要定义成 E ...

  9. asp.net 弹出式日历控件 选择日期 Calendar控件

    原文地址:asp.net 弹出式日历控件 选择日期 Calendar控件 作者:逸苡 html代码: <%@ Page Language="C#" CodeFile=&quo ...

随机推荐

  1. iOS Main Thread Checker: UI API called on a background thread的解释

    Xcode打印栏出现如下警告: Main Thread Checker: UI API called on a background thread 这个是什么错误呢? 其实这并不一定是错误,也可以理解 ...

  2. jQuery对象复制

    // 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); // 深层复制(一层一层往下复制直到最底层) var ...

  3. 零行代码为 App 添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...

  4. STDIN_FILENO的作用及与stdin 的区别

    1.STDIN_FILENO的作用 STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用 ...

  5. Android如何实现TCP和UDP传输

    TCP和UDP在网络传输中非常重要,在Android开发中同样重要. 首先我们来看一下什么是TCP和UDP. 什么是TCP? TCP:Transmission Control Protocol 传输控 ...

  6. 【Struts2】自定义拦截器interceptors

    下面给一张图片表示Struts2拦截器的处理流程. 通过这个流程图,我们可以看出一个完整的请求大概的过程为: 请求 -->filter 控制器 --> 拦截器 1/ 拦截器 2--> ...

  7. PHP 将html页面导出至Word

    <?php header("Content-Type: application/msword"); header("Content-Disposition: att ...

  8. error nr.1045 access denied for user 'root'@'localhost' (using passwd:no)

    在windows上卸载了mysql,再次重新安装的时候运行失败,并报以下错误: 解决办法: 1.服务里面停止Mysql服务. 2.卸载Mysql,删除MySQL的安装目录. 3.此外还要删除以下目录的 ...

  9. Java Nashorn--Part 3

    jjs 的 -Scripting 选项 jjs shell 是一个不错的方法来测试一些基本的 JavaScript,或者于不太熟悉的 JavaScript包进行交互(主要是指 javax.script ...

  10. Elasticsearch初探(一)

    一.安装(Linux篇) 现在的开源软件越来越成熟,都打好包了,下载后直接解压就可以测试了. curl -L -O https://artifacts.elastic.co/downloads/ela ...