介绍
本篇文章为大家展示了怎么在asp.net中封装一个layui组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
<强>复选框复选框组件封装强>
标签名称:cl-checkbox
标签属性:asp-for:绑定的字段,必须指定
- <李>
asp-items:绑定单选项类型为:IEnumerable
asp-skin: layui的皮肤样式,默认或原始
李> <李>asp-title:若只是一个复选框时显示的文字,且未指定项目,默认复选框的值为true
李>
其中在封装的时候看源代码发现两段非常有用的代码
1。判断是否可以多选:
代码如下:
var realModelType=For.ModelExplorer.ModelType;//通过类型判断是否为多选var _allowMultiple=typeof (string) !=realModelType,,typeof (IEnumerable) .IsAssignableFrom (realModelType);
2。获取模型绑定的列表值(多选的情况)
代码如下:
var currentValues=Generator.GetCurrentValues (ViewContext,。ModelExplorer表达式:。名字,allowMultiple:真);
这3句代码是在mvc自带的SelectTagHelper中发现的。
因为核心其实已经提供了非常多的TagHelper,比如常用的选择就是很好的参考对象,封装遇到问题的时候去找找看指不定就又意外的收获。
CheckboxTagHelper代码
using System.Collections.Generic; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; namespace LayuiTagHelper.TagHelpers { ,///& lt; summary> ,///复选框 ,///& lt;/summary> ,///& lt; remarks> ,///当项为空时显示单个,且选择后值为真 ,///& lt;/remarks> ,(HtmlTargetElement (CheckboxTagName)] ,public class CheckboxTagHelper : TagHelper ,{ private 才能const string  CheckboxTagName =,“cl-checkbox"; private 才能const string  ForAttributeName =,“asp-for"; private 才能const string  ItemsAttributeName =,“asp-items"; private 才能const string  SkinAttributeName =,“asp-skin"; private 才能const string  SignleTitleAttributeName =,“asp-title"; protected 才能IHtmlGenerator Generator {,得到;} public 才能;CheckboxTagHelper (IHtmlGenerator 发电机) {才能 ,,Generator =,发电机; ,,} (ViewContext)才能 public 才能ViewContext ViewContext {组,得到,,,} [HtmlAttributeName才能(ForAttributeName)] public 才能ModelExpression For {组,得到,,,} [HtmlAttributeName才能(ItemsAttributeName)] public 才能;IEnumerable< SelectListItem>, Items {组,得到,,,} [HtmlAttributeName才能(SkinAttributeName)] public 才能CheckboxSkin Skin {组,得到,,,},=,CheckboxSkin。默认; [HtmlAttributeName才能(SignleTitleAttributeName)] public 才能string SignleTitle {组,得到,,,} public 才能;override  void 过程(TagHelperContext 上下文,TagHelperOutput 输出) {才能 ,,//获取绑定的生成的名字属性 ,,string inputName =, ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName (? . name); ,,string skin =, string.Empty; ,,# region 风格 ,,switch (皮肤) ,,{ ,,,case CheckboxSkin。默认: ,,,,skin =,““ ,,,,休息; ,,,case CheckboxSkin。原始: ,,,,skin =,“primary"; ,,,,休息; ,,} ,,# endregion ,,# region 单个复选框 ,,if (Items ==, null) ,,{ ,,,output.TagName =,“input"; ,,,output.TagMode =, TagMode.SelfClosing; ,,,output.Attributes.Add (“type",,“checkbox"); ,,,output.Attributes.Add (“id",, inputName); ,,,output.Attributes.Add (“name",, inputName); ,,,output.Attributes.Add (“lay-skin",,皮肤); ,,,output.Attributes.Add (“title",, SignleTitle); ,,,output.Attributes.Add (“value",,“true"); ,,,if (为得閒? .ToString () .ToLower (),==,“true") ,,,{ ,,,,output.Attributes.Add (“checked",,“checked"); ,,,} ,,,返回; ,,} ,,# endregion ,,# region 复选框组 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在asp.net中封装一个layui组件