zoukankan      html  css  js  c++  java
  • 枚举生成MVC3: Bind Enum To DropDownList ?java教程

    发一下牢骚和主题无关:

        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 )

        4. 运行 /Test/Edit/1  看看果效吧。

        

        

    文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)

  • 相关阅读:
    Java & PHP RSA 互通密钥、签名、验签、加密、解密
    Spring Cloud:Security OAuth2 自定义异常响应
    Spring Cloud:统一异常处理
    Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册
    Hexo + GitEE 搭建、备份、恢复、多终端
    Spring:AOP面向切面编程
    如何找到适合自己的文档工具?
    比较好玩的工具类合集推荐!!!
    C++11 如何使代码仅执行一次?
    CMake 常用操作有哪些?
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3042249.html
Copyright © 2011-2022 走看看