ASP.NET MVC 中枚举生成下拉框

最近公司在开发财务系统,在工作中遇到不少的地方需要下拉框。

但是枚举框中数据的内容又来自枚举。

枚举代码如下:

 1 public class EnumDemo
 2     {
 3
 4         public enum Value {
 5             First=1,
 6             Second=2
 7         }
 8         public enum Name
 9         {
10             我是第一 = 1,
11             我是第二 = 2
12         }
13
14
15
16     }

我一看还挺简单。

于是第一次是这样的:

1    <select>
2         <option value="1">我是第一</option>
3         <option value="2">我是第一</option>
4     </select>

效果是出来了,但是这样的话,如果有七八个枚举,每个枚举有七八个值,我的手还不写废掉吗。

于是第二次页面代码如下:

 1     <select>
 2         @foreach (var item in Enum.GetValues(typeof(EnumDemo.Value)))
 3         {
 4             <option value="@((int)item)">
 5                 @((EnumDemo.Name)item)
 6             </option>
 7
 8         }
 9
10     </select>

看效果:

解释一下,这里typeof看不懂没关系,知道这个typeof的结果是Type就好了, 正好Enum.GetValues()需要Type类型参数。看下图的提示

后面感觉这样用起来也麻烦(个人有点懒吧),于是想到可以这样:

新建了一个帮助类:

 1         public static string CreatSelection<TValue,TName>()
 2         {
 3
 4             StringBuilder stringBuilder = new StringBuilder();
 5
 6             foreach (var item in System.Enum.GetValues(typeof(TValue)))
 7             {
 8                 stringBuilder.AppendFormat("<option value=‘{0}‘>{1}</option>", (TName)item, (int)item);
 9             }
10             return stringBuilder.ToString();
11
12         }

然后页面代码如下:

1     <select>
2         @(  Html.Raw(  WorkRecord.Enum.EnumHelper.CreatSelection<EnumDemo.Value,EnumDemo.Name>()  ) )
3     </select>

效果如下:

虽然效果都是一样的,但是你写起来的感觉绝对不一样。

刚刚毕业的新手,如果大佬们能给些更好的意见,欢迎留言,谢谢!

也欢迎不懂的童鞋问我,加班晚上不在,不加班随机在线,看见一定会回复的!

本人也是刚刚毕业的学生,第一次写博客,也不太懂规矩,讲得也不太清楚,望见谅!

文章仅以此献给不懂的同学,与君共勉。

原文地址:https://www.cnblogs.com/MirLiao/p/11252674.html

时间: 2024-09-27 08:18:52

ASP.NET MVC 中枚举生成下拉框的相关文章

GridView 中绑定DropDownList ,下拉框默认选中Label的值

在GridView中,我们 有时候要绑定值. 前台绑定的代码可以这样 <asp:TemplateField HeaderText="当前状态" ItemStyle-HorizontalAlign="Center"> <EditItemTemplate> <asp:DropDownList ID="dStatus" DataSource='<%#BindStatus()%>' DataTextField=&

MVC实现多选下拉框

借助Chosen Plugin可以实现多选下拉框. 选择多项: 设置选项数量,比如设置最多允许2个选项: 考虑到多选下拉<select multiple="multiple"...></select>选中项是string数组,Model应该这样设计: using System.Collections.Generic; using System.Web.Mvc; namespace MvcApplication1.Models { public class Car

struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input

原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1     function dosearch() {2         if ($("#textValue").val() == "") {3                 $("#errortip").html("<font color='#FF0000'>请输入查询内容</font>")

AngularJS: 使用ng-option生成下拉框,添加全部选择项

效果图如下: HTML代码: <div class="controls pull-left"> 消费类型: <select id="selectType" ng-model="currentType" ng-options="optiontype.id as optiontype.typeName for optiontype in typemodel"> </select> </di

maven一模块字段调用另一个模块数据生成下拉框

店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接口类 2.编写begin()方法,提取数据 3.begin()方法调用一转化Json方法:  4.在进入页面index()方法中调用begin方法: 页面  .ftl  文件: 1.注入model 2.页面显示  3.弹框中下拉框字段 4.查看详情弹框 结果显示:

asp.net MVC 中枚举创建下拉列表?

我将尝试使用 Html.DropDownList 扩展方法,但不能找出如何使用它的枚举. 让我们说我有一个这样的枚举: public enum ItemTypes { Movie = 1, Game = 2, Book = 3 } 如何着手创建下拉列表,这些值,使用 HTML'>Html.DropDownList 扩展名的方法?或者是我最好的方法,只需创建的循环,并手动创建 html 元素吗? 解决方法 1: 我滚进扩展方法的符文的答案: public static SelectList ToS

生成下拉框的几种方法总结——数据来源:枚举

上节介绍数据来源是数据库,这节介绍对枚举进行数据获取,形成下拉列表. 使用场景:某些状态值获取等,一般是数据量小,不需要在数据库中进行维护的数据集 1.前提要有枚举数据 package com.test.entity.neworder; import java.util.Objects; /** * 新订单状态 * * @author 刘涛 */ public enum NewOrderStateEunm { //已删除 已删除(0, "已删除"), //已创建 已创建(1, &quo

MVC+knocKout.js 实现下拉框级联

数据库:部门表和员工表 在控制器里面的操作: 1 public ActionResult Index3() 2 { 3 ViewBag.departments = new SelectList(getDepartments(),"d_id","d_name");//部门数据 4 return View(); 5 } 6 7 private List<department> getDepartments() 8 { 9 List<department

AngularJS: 使用ng-option生成下拉框并在controller调用

Controller代码 </pre><pre name="code" class="javascript">function billsDetailController($scope, $http, $log) { var self = this; $scope.billsDetailData = []; $scope.billsDetailTotalData = []; $scope.model = [{ id: 201401, prod