0. 准备测试数据

0.1 : 枚举

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MvcApplication.Models
{
public enum YesOrNo
{
否 = 0,
是 = 1
}
}

0.2 : 对应实体类及表sql

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; namespace MvcApplication.Models
{
public class Test
{
[Key]
public int Id { get; set; } [Display(Name = "状态")]
[Required(ErrorMessage = "状态不能为空.")]
public int Status { get; set; }
}
} /*
-- 对应SQL
CREATE TABLE Test(
Id INT PRIMARY KEY IDENTITY(1,1),
[Status] INT
)
go
INSERT INTO Test VALUES(1)
*/

0.3 在Controller 文件夹上生成强类型(Test)的读写控制器及视图. (自动生成这些,我们的测试工作就很轻松了)

1.  写一个扩展方法,放在静态的工具类中。

/// <summary>
/// 将枚举转换到Select的扩展方法
/// </summary>
/// <typeparam name="TEnum">枚举类型</typeparam>
/// <param name="enumObj">枚举对象</param>
/// <returns>SelectList</returns>
public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
{
var values = from TEnum e in Enum.GetValues(typeof(TEnum))
select new { Id = Convert.ToInt32(e), Name = e.ToString() }; return new SelectList(values, "Id", "Name", Convert.ToInt32(enumObj));
}

2. 改写Action

//
// GET: /Test/Edit/1 public ActionResult Edit(int id)
{
Test test = db.Test.Find(id);
ViewBag.list = ((YesOrNo)test.Status).ToSelectList();
//ViewData["status"] = ((YesOrNo)test.Status).ToSelectList(); //不可以的
return View(test);
}

3. 改写View 中的Edit.cshtml

@Html.DropDownListFor(model=> model.Status, ViewBag.list as SelectList )

本文转自:http://blog.csdn.net/yenange/article/details/8847833

Bind Enum To DropDownList ?的更多相关文章

  1. Bind Enum to Combobox.SelectedIndex

    原文:Bind Enum to Combobox.SelectedIndex Do you mean that you want to bind a variable (not a property) ...

  2. Bind Enum to ListControl

    当使用MVVM时,相信你和我一样经常有这样的需求: 在ViewModel里定义了一个Enum,它必然是对应UI上的一个ListControl作为不同选项. 有一种做法是使用Converter,将Enu ...

  3. ASP.NET MVC 表格操作

    Beginners Guide for Creating GridView in ASP.NET MVC 5 http://www.codeproject.com/Articles/1114208/B ...

  4. Java基础(五)-Java序列化与反序列化

    .output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...

  5. Asp.Net初学小结

    第一章   1.搭建Asp.net开发环境   1).net FrameWork(VS) 2)IIS(xp:5.1,2003:6.0,vista:70,win7:7.5) C:\Windows\Mic ...

  6. Asp.Net初学小结 判断数组中是否有重复的数据

    Asp.Net初学小结   第一章   1.搭建Asp.net开发环境   1).net FrameWork(VS) 2)IIS(xp:5.1,2003:6.0,vista:70,win7:7.5)  ...

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

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

  8. Enum简单例子DropdownList

    借鉴:http://www.cnblogs.com/suizhikuo/archive/2013/06/07/3125225.html vs2012 mvc4 最终效果: 1.建立mvc4 Inter ...

  9. 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误

    原文:如何解决FormView中实现DropDownList连动选择时出现 "Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的 ...

随机推荐

  1. UVA 11732 strcmp() Anyone (Trie+链表)

    先两两比较,比较次数是两者相同的最长前缀长度*2+1,比较特殊的情况是两者完全相同时候比较次数是单词长度*2+2, 两个单词'末尾\0'和'\0'比较一次,s尾部'\0'和循环内'\0'比较一次. 因 ...

  2. 交叉熵cross entropy和相对熵(kl散度)

    交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...

  3. Spring boot 集成ActiveMQ(包含双向队列实现)

    集百家之长,成一家之言.  1. 下载ActiveMQ https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.9/apache-activ ...

  4. 爬虫遇到HTTP Error 403的问题

    # coding=gbk from bs4 import BeautifulSoup import requests import urllib x = 1 y = 1 def crawl(url): ...

  5. 监控电脑CPU,内存,文件大小,硬盘空间,IP,用户名

    public class MonitorTools { /// <summary> /// 获取具体进程的内存,线程等参数情况 /// </summary> /// <p ...

  6. 小试牛刀,建立jsp网页与导出war包

    一.建立jsp网页 首先创建一个动态项目(我们学习的是动态网) 二.检查编码utf-8有没错误. 如有错误就是没有设置eclipse,请按照eclipse设置 编写一段代码,进行了解 三.导出一个wa ...

  7. attachEvent和addEventListener 的使用方法和区别

    attachEvent方法,为某一事件附加其它的处理事件.(不支持Mozilla系列)addEventListener方法 用于 Mozilla系列document.getElementById(&q ...

  8. mysql 5.7安装密码校验插件validate_password

    在使用服务器插件之前,必须将它们加载到服务器中.MySQL支持在服务器启动和运行时加载插件.还可以在启动时控制加载插件的激活状态,并在运行时卸载它们.在加载插件时,可以从INFORMATION_SCH ...

  9. 通过源码编译安装VIM

    开发中使用的是Ubuntu 12.04 LTS,通过sudo apt-get install vim安装的版本较低,不支持YCM,所以,用源码编译并安装最新的Vim. 卸载旧版本的Vim: sudo ...

  10. HMAC(Hash-based Message Authentication Code)实现原理

    1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...