[HtmlTargetElement("enums")]
//[HtmlTargetElement("enums", TagStructure = TagStructure.WithoutEndTag)]
public class EnumsTagHelper : TagHelper
{
[HtmlAttributeName("asp-enum")]
public Enum Value { get; set; } [HtmlAttributeName("asp-value")]
public string SelectedValue { get; set; } [HtmlAttributeName("asp-id")]
public string Id { get; set; } [HtmlAttributeName("asp-href")]
public string DataHref { get; set; } [HtmlAttributeName("asp-valuetype")]
public int ValueIsIndex { get; set; } = ; /// <summary>
/// 将Enum转换为List<SelectListItem>
/// </summary>
/// <returns></returns>
private List<SelectListItem> GetEnumSelectListItem()
{
var list = new List<SelectListItem>();
var typeInfo = Value.GetType().GetTypeInfo();
var enumValues = typeInfo.GetEnumValues(); foreach (var value in enumValues)
{ MemberInfo memberInfo =
typeInfo.GetMember(value.ToString()).First(); var descriptionAttribute =
memberInfo.GetCustomAttribute<DescriptionAttribute>(); list.Add(new SelectListItem()
{
Text = descriptionAttribute.Description,
Value = (ValueIsIndex == ) ? ((int)value).ToString() : value.ToString()
}); }
return list;
} public override void Process(TagHelperContext context, TagHelperOutput output)
{
var list = GetEnumSelectListItem();
// var value = context.AllAttributes["value"]?.Value as string;
output.TagName = "select";
output.Attributes.SetAttribute("id", Id);
output.Attributes.SetAttribute("data-href", DataHref);
var content = output.GetChildContentAsync();
output.Content.AppendHtml(content.Result);
foreach (var item in list)
{
if (item.Value != null)
{
if (item.Value == SelectedValue)
{
output.Content.AppendHtml($"<option value='{item.Value}' selected='selected'>{item.Text}</option>");
}
else
{
output.Content.AppendHtml($"<option value='{item.Value}'>{item.Text}</option>");
}
}
else
{
if (item.Text == SelectedValue)
{
output.Content.AppendHtml($"<option selected='selected'>{item.Text}</option>");
}
else
{
output.Content.AppendHtml($"<option>{item.Text}</option>");
}
}
}
//output.Content.AppendHtml("<select/>");
}
}

更多精彩文章请关注我们的微信公众号FocusDotCore

net core 使用tagHelper将 enum枚举类型转换为下拉列表select的更多相关文章

  1. [小问题笔记(四)] Enum枚举类型转换为DataTable( C# )

    枚举: public enum ProductType { 小产品=, 大产品, 超大产品 } 转换方法: /// <summary> /// 枚举类型转化为DataTable /// & ...

  2. Python中模拟enum枚举类型的5种方法分享

    这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下   以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...

  3. enum枚举类型的定义

    enum枚举类型的定义方式与某种用法 #include <iostream> using namespace std; int main() { enum TOT{ zero, one, ...

  4. enum枚举类型的使用

    修饰符为public static enum,不用加final,否则提示错误. 枚举类的所有实例必须在枚举类中显式列出(,分隔,; 结尾).列出的实例系统会自动添加 public static fin ...

  5. C语言--enum,typedef enum 枚举类型详解

    原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环 ...

  6. Java中的Enum枚举类型总结

    废话不多说,直接上代码,该例子来源于:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html public enum Planet { ...

  7. C# Enum枚举类型操作扩展类

    使用示例: using System.ComponentModel; namespace SchoolEnterpriseManageSys.Enum { /// <summary> // ...

  8. Java enum枚举类型

    java的枚举类型详解: 简单示例: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 复杂示例(带自定义构造方法与类型) public enum En ...

  9. C++ enum 枚举类型

    1. 枚举类型浅谈 假设我们要设计一个打开文件的函数, 打开文件由三种状态: input, output 和 append. 不使用枚举, 我们可能会写出如下的代码 const int input = ...

随机推荐

  1. 学习札记 ----wind7下如何安装SqlServer数据库

    1.控制面板 ---找到程序和功能选项 如下图所示: 2.打开程序和功能后进入如下图所示的界面,点击打开或关闭window功能. 3.启动window7自带的IIS功能.如下图所示: 4.如上动作准备 ...

  2. Oracle 定时查询数据插入新表中(job+存储过程)

    create table EGMAS_COUNT_DATA(TIMES       date not null, COUNT NUMBER(30) not null, SYSTEM_NAME VARC ...

  3. 超全面!这可能是最全面的 jQuery 知识总结

    个人建议:学习 jQuery 前先掌握基本的 JavaScrpit 语法,特别是对函数要掌握,jQuery 基本上是使用函数. jQuery 简介 jQuery 是一个轻量级 JavaScript 库 ...

  4. win8.1 安装

    下载了Windows8.1企业版的iso文件,文件名称:cn_windows_8_1_enterprise_x86_dvd_2791409.iso 下载地址: http://msdn.itellyou ...

  5. php header的使用,PHP常见header状态总结

    <?php//200 正常状态header('HTTP/1.1 200 OK');// 301 永久重定向,记得在后面要加重定向地址 Location:$urlheader('HTTP/1.1 ...

  6. WebService的简单运用添加删除

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术,简单来说就是将数据存储到项目的文件夹下 .NET中基于DOM核心类 XmlDocument 表示一个XML文档 XmlNode表示X ...

  7. IT 圈里有哪些经常被读错的词?

    原文链接:IT 圈里有哪些经常被读错的词? ()标相应英文单词[]标音标 =====公司/产品名===== Youtube (You-tube [tju:b]) 念 优tiu啵 不念 优吐毙Skype ...

  8. Maven Install指令构建时出现找不到符号

    检查引用的JRE编译的版本,可能由于JRE编译版本太低导致的  

  9. LeetCode 39. Combination Sum (组合的和)

    Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique c ...

  10. LeetCode 34. Search for a Range (找到一个范围)

    Given an array of integers sorted in ascending order, find the starting and ending position of a giv ...