TagHelper+Layui封装组件之Radio单选框

  • 标签名称:cl-radio
  • 标签属性:
    • asp-for:绑定的字段,必须指定
    • asp-items:绑定单选项 类型为:IEnumerable<SelectListItem>

      太简单了,直接上代码了

RadioTagHelper代码

  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.AspNetCore.Mvc.Rendering;
  4. using Microsoft.AspNetCore.Mvc.ViewFeatures;
  5. using Microsoft.AspNetCore.Razor.TagHelpers;
  6. namespace LayuiTagHelper.TagHelpers
  7. {
  8. /// <summary>
  9. /// 单选框
  10. /// </summary>
  11. [HtmlTargetElement(RadioTagName)]
  12. public class RadioTagHelper : TagHelper
  13. {
  14. private const string RadioTagName = "cl-radio";
  15. private const string ForAttributeName = "asp-for";
  16. private const string ItemsAttributeName = "asp-items";
  17. [ViewContext]
  18. public ViewContext ViewContext { get; set; }
  19. [HtmlAttributeName(ForAttributeName)]
  20. public ModelExpression For { get; set; }
  21. [HtmlAttributeName(ItemsAttributeName)]
  22. public IEnumerable<SelectListItem> Items { get; set; }
  23. public override void Process(TagHelperContext context, TagHelperOutput output)
  24. {
  25. if (For == null)
  26. {
  27. throw new ArgumentException("必须绑定模型");
  28. }
  29. foreach (var item in Items)
  30. {
  31. var radio = new TagBuilder("input");
  32. radio.TagRenderMode = TagRenderMode.SelfClosing;
  33. radio.Attributes.Add("id", ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(For.Name));
  34. radio.Attributes.Add("name", ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(For.Name));
  35. radio.Attributes.Add("value", item.Value);
  36. radio.Attributes.Add("title", item.Text);
  37. radio.Attributes.Add("type", "radio");
  38. if (item.Disabled)
  39. {
  40. radio.Attributes.Add("disabled", "disabled");
  41. }
  42. if (item.Selected || item.Value == For.Model?.ToString())
  43. {
  44. radio.Attributes.Add("checked", "checked");
  45. }
  46. output.Content.AppendHtml(radio);
  47. }
  48. output.TagName = "";
  49. }
  50. }
  51. }

使用示例

  1. @{
  2. string sex="男";
  3. var Items=new List<SelectListItem>()
  4. {
  5. new SelectListItem() { Text = "男", Value = "男" },
  6. new SelectListItem() { Text = "女", Value = "女"},
  7. new SelectListItem() { Text = "不详", Value = "不详",Disabled=true }
  8. };
  9. }
  10. <cl-radio asp-items="@Items" asp-for="sex"></cl-radio>

TagHelper+Layui封装组件之Radio单选框的更多相关文章

  1. layui 获取radio单选框选中的值

    Layui 获取 radio的值,layui判断radio选中的单选值 layui form 表单获取radio选中的值 首先准备两个radio <input type="radio& ...

  2. elementUI 学习入门之 radio 单选框

    Radio 单选框 基础用法 选项默认可见,选项不宜过多,选项过多建议使用 select 选择器 使用 Radio 组件,需要设置 v-model 绑定变量,选中意味着变量的值为相应 Radio  l ...

  3. Radio 单选框

    Radio 单选框 在一组备选项中进行单选 ¶基础用法 由于选项默认可见,不宜过多,若选项过多,建议使用 Select 选择器. 要使用 Radio 组件,只需要设置v-model绑定变量,选中意味着 ...

  4. 前端 HTML form表单标签 input标签 type属性 radio 单选框

    <input type="radio"> 单选框 适用于 选择性别按钮网页等 <!DOCTYPE html> <html lang="en& ...

  5. 纯css3简单实用的checkbox复选框和radio单选框

    昨天为大家分享了一款很炫的checkbox复选框和radio单选框,今天再给大家带来一款简单实用的checkbox复选框和radio单选框.界面清淅.舒服.先给大家来张效果图: 在线预览   源码下载 ...

  6. 纯css3实现的超炫checkbox复选框和radio单选框

    之前为大家分享了好多css3实现的按钮.今天要为大家分享的是纯css3实现的checkbox复选框和radio单选框,效果超级炫.先让我们看看图吧! 在线预览   源码下载 这个实例完全由css3实现 ...

  7. selenium死活定位不到元素以及radio单选框点击不生效

    今天操作一个单选框浪费太多时间,现在其实很简单得东西,记录一下: 1,问题一,定位不到 如图,使用selenium IDE和xpath helper都试过,无法成功定位到这个单选框,实际上是因为,这个 ...

  8. JQuery radio单选框应用

    转载:JQuery判断radio(单选框)是否选中和获取选中值方法总结 一.利用获取选中值判断选中 直接上代码,别忘记引用JQuery包 复制代码 代码如下: < !DOCTYPE html P ...

  9. jquery获取radio单选框的值

    1.获取原有单选框的值 var value=$("input[name='is_setting']:checked").val(); 2.获取重选后的单选框的值 <tr> ...

随机推荐

  1. Django学习(3)模板定制

    在Django学习(一)一首情诗中,views.py中HTML被直接硬编码在代码之中,虽然这样便于解释视图是如何工作的,但直接将HTML硬编码到视图却不算一个好主意.因为: 对页面设计进行的任何改变都 ...

  2. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts251 ...

  3. 解读JavaScript原型链

    var F = function(){}; F.prototype.a = function(){}; Object.prototype.b = function(){}; Function.prot ...

  4. iOS 内存泄漏排查以及处理

    使用Xcode7的Instruments检测解决iOS内存泄露   文/笨笨的糯糯(简书作者)原文链接:http://www.jianshu.com/p/0837331875f0作为一名iOS开发攻城 ...

  5. EclipseIDE设置

    对于新安装的Eclipse而言要设置: 1.Window-Preferences-General-Workspace,然后分别设置Text file encoding为UTF-8和设置New text ...

  6. 正则表达式 cheat sheet

  7. Udacity并行计算课程笔记-The GPU Hardware and Parallel Communication Patterns

    本小节笔记大纲: 1.Communication patterns gather,scatter,stencil,transpose 2.GPU hardware & Programming ...

  8. Lambda表达式补充

    l“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型. lLambda 表达式的运算符 =>,该运算符读为“goes to”. l=> 运算符 ...

  9. Java 浅析Thread.join()

    概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...

  10. axios配合vue+webpack使用

    1.安装引用: cnpm install axios --save-dev 2.在组件中引入: import axios from 'axios'; 3.使用示例: 执行GET请求: // 为给定 I ...