//把数字转成枚举
public static T[] NumStringsToEnums<T>(string enumNumString ) //where T:Enum
{
if (string.IsNullOrEmpty(enumNumString)) return null;
string[] aryNums = enumNumString.Split(','); Type enumType = typeof(T); List<T> list = new List<T>();
for(int i=0;i< aryNums.Length; i++)
{
int num = 0;
int.TryParse(aryNums[i].Trim(), out num);
if (num == 0) continue; Array enumValues = Enum.GetValues(enumType);
foreach (Enum enumValue in enumValues)
{
Int32 key = Convert.ToInt32(enumValue);
if (key == num)
{
list.Add((T)(object)enumValue);
break;
}
}
}
return list.ToArray();
}
//判断字符串数字是否是枚举中的值
public static bool HasEnumInNumString<T>(string enumNumString, T findValue) //where T:Enum
{
T[] enums = NumStringsToEnums<T>(enumNumString);
if (enums == null) return false; for(int i=0; i<enums.Length; i++)
{
if((int)(object)enums[i]== (int)(object)findValue)
{
return true;
}
}
return false;
} //数字的枚举串变成汉字
public static string[] EnumNumsToStrings<T>(string enumNumString)
{
if (string.IsNullOrEmpty(enumNumString)) return new string[0]; T[] enums = NumStringsToEnums<T>(enumNumString);
string[] chinese = new string[enums.Length];
for(int i=0; i<enums.Length; i++)
{
chinese[i] = GetEnumCustomDescription(enums[i]);
}
return chinese;
} //数字的枚举串变成前端复选框(包括没有选中的)
public static Tuple<T, string, bool> [] EnumNumsToCheckBoxInfo<T>(string enumNumString)
{
Type enumType = typeof(T);
Array enumValues = Enum.GetValues(enumType);
int n = enumValues.Length;
Tuple<T, string, bool>[] tuples = new Tuple<T, string, bool>[n];
for (int i = 0; i < n; i++)
{
T enumValue = (T)(object)enumValues.GetValue(i);
string chinese = GetEnumCustomDescription((Enum)(object)enumValue);//GetDescription((Enum)(object)enumValue,true);
bool found = HasEnumInNumString(enumNumString, enumValue); tuples[i] = new Tuple<T, string, bool>(enumValue,chinese, found);
}
return tuples;
}
//枚举值转换成前端需要的复选框需要的HTML
public static string EnumNumsToCheckBoxHtml<T>(string enumNumString, string inputVarName,string seperator)
{
StringBuilder sb = new StringBuilder();
Tuple<T, string, bool>[] tuples = EnumNumsToCheckBoxInfo<T>(enumNumString);
for (int i = 0; i < tuples.Length; i++)
{
sb.Append("<input type=\"checkbox\" value=\"" + (int)(object)tuples[i].Item1 + "\""
+ (tuples[i].Item3 ? " checked " : "")
+ " name=\"" + inputVarName + "\">" + tuples[i].Item2+ seperator );
//< input type = "checkbox" value = "100" name = "checkboxValue" checked > gif上传阿里云 & nbsp;      
}
return sb.ToString();
}

  调用:

ViewData["bookAttributeHtml"] =
EnumUtil.EnumNumsToCheckBoxHtml<枚举类>("", "前端checkName", "分隔符");

  前端:

 <div class="form-group group-user-group">
<label class="col-sm-2 col-xs-2 control-label">书属性:</label>
<div class="col-sm-10 col-xs-10">
@Html.Raw(ViewData["bookAttributeHtml"])
</div>
</div>

  显示:

C#Enum用Tuple保存值绑定到前端的CheckBox的更多相关文章

  1. WPF实现多值绑定特性以及多值转换

    WPF中的实现 我们首先来看一下常规的绑定 <Window    x:Class="WpfApplicationSample.MainWindow"    xmlns=&qu ...

  2. [vue]v-bind: sytle/class-bind&属性值绑定

    v-bind - style绑定 - class绑定 - 属性值绑定 <!DOCTYPE html> <html lang="en"> <head&g ...

  3. 总结:WPF中MultiBinding多值绑定的方法

    原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock  Grid.Row="5" Grid.Column="3 ...

  4. WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)

    WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...

  5. WPF中DatePiker值绑定以及精简查询

    WPF中DatePiker值绑定以及精简查询 1.WPF中DatePiker值绑定 Xaml中值绑定使用Text <DatePicker Text="{Binding strMinDa ...

  6. Django forms 关于select和checkbox设置初始选中值及让前端选中指定值

    Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...

  7. easyui 》 radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中

    获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...

  8. jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中

    jQuery获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...}); //为Se ...

  9. SharePoint 2013 新建项目字段自动加载上次保存值

    1.点击进入NewForm.aspx页面,编辑页面,插入Script Editor WebPart,如下图: 2.插入后如下图,拖动AutoRecord WebPart到脚本编辑器上面,防止因为加载顺 ...

随机推荐

  1. Linxu基础知识:终端、终端模拟器、shell

    实验楼课程第二个实验的讲解部分出现了三个词,我不知道它们三个是什么关系.查阅了度娘,归纳如下: - 终端: 在UNIX/LINUX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端就成为S ...

  2. 最近邻算法(KNN)

    最近邻算法: 1.什么是最近邻是什么? kNN算法全程是k-最近邻算法(k-Nearest Neighbor) kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数数以一个类型别 ...

  3. git与eclipse集成之文件回退

    1.1. 文件回退 1.1.1.        添加或修改文件回退,选择要回退的文件,右键Overwrite 1.1.2.        删除文件回退 选择要回退的文件,右键Overwrite 文件变 ...

  4. 装机uefi问题

    1 uefi不支持普通winpe启动,需要改为legacy 2 七代酷睿不支持win10以下版本 3 装机后无法启动是因为隐藏分区问题,删除掉,最好整个硬盘格式化 4 老毛桃一键装机不可以时,改为虚拟 ...

  5. java interview

    gitbook address https://dongchuan.gitbooks.io/java-interview-question/content/java/==_equal.html

  6. delhpi:http超时设置(转载)

    原文地址:http://www.delphitop.com/html/kongjian/544.html var FHTTPClient:TIdHTTP; begin FHTTPClient := T ...

  7. Linux Free命令每个数字的含义 和 cache 、buffer的区别

    Linux Free命令每个数字的含义 和 cache .buffer的区别 我们按照图中来一细细研读(数字编号和图对应)1,total:物理内存实际总量2,used:这块千万注意,这里可不是实际已经 ...

  8. Light OJ 1078

    题意: 给你 N,K 输出 KKKK.....KK能整除 N, 输出 K 的个数, (最小) 基础数学, 取摸运算即可. #include<bits/stdc++.h> using nam ...

  9. oracle 报表带小计合计

    selectcase when (grouping(glbm)=1) then '合计' else DECODE(glbm,null,'',glbm) end glbm,case when (grou ...

  10. winform中textbox提示框

    在winform中向textbox输入内容时下面有提示信息,效果如图所示: private void Form1_Load(object sender, EventArgs e) {     Auto ...