怎么在asp.net中封装一个layui组件

  介绍

本篇文章为大家展示了怎么在asp.net中封装一个layui组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>复选框复选框组件封装

标签名称:cl-checkbox

标签属性:asp-for:绑定的字段,必须指定

<李>

asp-items:绑定单选项类型为:IEnumerable

<李>

asp-skin: layui的皮肤样式,默认或原始

<李>

asp-title:若只是一个复选框时显示的文字,且未指定项目,默认复选框的值为true

怎么在asp.net中封装一个layui组件

其中在封装的时候看源代码发现两段非常有用的代码

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组件