C#Enum用Tuple保存值绑定到前端的CheckBox
//把数字转成枚举
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的更多相关文章
- WPF实现多值绑定特性以及多值转换
WPF中的实现 我们首先来看一下常规的绑定 <Window x:Class="WpfApplicationSample.MainWindow" xmlns=&qu ...
- [vue]v-bind: sytle/class-bind&属性值绑定
v-bind - style绑定 - class绑定 - 属性值绑定 <!DOCTYPE html> <html lang="en"> <head&g ...
- 总结:WPF中MultiBinding多值绑定的方法
原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock Grid.Row="5" Grid.Column="3 ...
- WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...
- WPF中DatePiker值绑定以及精简查询
WPF中DatePiker值绑定以及精简查询 1.WPF中DatePiker值绑定 Xaml中值绑定使用Text <DatePicker Text="{Binding strMinDa ...
- Django forms 关于select和checkbox设置初始选中值及让前端选中指定值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- easyui 》 radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...
- jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
jQuery获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...}); //为Se ...
- SharePoint 2013 新建项目字段自动加载上次保存值
1.点击进入NewForm.aspx页面,编辑页面,插入Script Editor WebPart,如下图: 2.插入后如下图,拖动AutoRecord WebPart到脚本编辑器上面,防止因为加载顺 ...
随机推荐
- Spring @Bean注解 (基于java的容器注解)
基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...
- libevent的入门学习-库的安装【转】
转自:https://blog.csdn.net/lookintosky/article/details/61658067 libevent的入门学习-库的安装最近开始接触Linux应用层的东西,发现 ...
- BIM 开发商 --广州
BIM 开发或咨询商 --广州: 1.广州君和信息技术有限公司(与二公司有合作,推荐!) 艾三维软件 www.i3vsoft.com 广州市越秀区东风中路445号越秀城市广场北塔2007 是一家为 ...
- HTTP协议04-返回状态码
状态码职责是在客户端向服务器端发送请求时候,描述返回的请求结果.借助状态码,用户可以知道服务器是否正常处理了请求,还是出错了. 状态码的类别 类别 原因短语 1XX Informational(信 ...
- Django-jinjia2的赋值
一 变量 1. 变量的形式是:{{ variable }},当模板引擎碰到变量时,引擎使用变量的值替代变量: 2. 使用“.”能够访问变量的属性: 3. 当模板引擎碰到“.”的时候,查找顺序是: a) ...
- Mysql支持哪几种索引
从数据结构角度 1.B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理 2.hash索引:a 仅仅能满足"=","IN&q ...
- 036_lua应用扩展
一.request_id定义 ## # request id ## lua_package_path '/opt/nginx/conf/lua/lib/?.lua'; init_by_lua ' uu ...
- php password_hash
2018-1-6 17:22:13 星期六 php 自带的密码生成方法, 如果生成密码最好使用这个, 这个是"单程"的, 没有解密函数 $a = '123456'; $b = pa ...
- springboot:接收date类型的参数
今天有个postmapping方法,地址都正确,就是死活进不去,真是奇怪了. 终于从日志中得出些端倪,见下: 只有这个属性报错,恰恰这个属性是Date型. 这句话说得更清楚: "defaul ...
- ROM、PROM、EPROM、EEPROM、FLASH ROM简介
ROM指的是"只读存储器",即Read-Only Memory.这是一种线路最简单半导体电路,通过掩模工艺, 一次性制造,其中的代码与数据将永久保存(除非坏掉),不能进行修改.这玩 ...