之前使用wtm来进行快速开发wtm框架见:https: wtmdoc walkingtec cn
06月28日 07:52
之前使用wtm来进行快速开发
(资料图片仅供参考)
wtm框架见:
https://wtmdoc.walkingtec.cn/
其前端选择Layui的情况下有大量的TagHelper,大幅度提高了开发效率
虽然已有的组件很丰富但也不能完全覆盖所有的需求,这个时候就需要自己写TagHelper。
参考了WTM源码,和微软官方文档
TagHelper虽然使用起来方便,但是大量的拼接字符串编写体验和可读性都不是很好。
理想的情况是能充分利用.net中强大的Razor引擎来编写TagHelper,从而更方便的进行组件复用。
可以从asp.net core中找到viewengine的使用方法
以封装一个wangEditor为例
TagHelper:
using Microsoft.AspNetCore.Html;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc.ModelBinding;using Microsoft.AspNetCore.Mvc.Rendering;using Microsoft.AspNetCore.Mvc.ViewEngines;using Microsoft.AspNetCore.Mvc.ViewFeatures;using Microsoft.AspNetCore.Razor.TagHelpers;using System;using System.IO;using WalkingTec.Mvvm.Core;using WalkingTec.Mvvm.Core.Extensions;using WalkingTec.Mvvm.TagHelpers.LayUI;namespace TagHelpers{ [HtmlTargetElement("wt:wangeditor", Attributes = "field", TagStructure = TagStructure.WithoutEndTag)] public class WangEditorTagHelper : TagHelper { public WangEditorTagHelper(ICompositeViewEngine viewEngine,IHttpContextAccessor httpContextAccessor) { _viewEngine = viewEngine; _httpContextAccessor = httpContextAccessor; } public ModelExpression Field { get; set; } public string Id { get; set; } public string Name { get; set; } public int Height { get; set; } = 300; private ICompositeViewEngine _viewEngine; private IHttpContextAccessor _httpContextAccessor; public override void Process(TagHelperContext context, TagHelperOutput output) { var viewEngineResult = _viewEngine.GetView("~/Views/Shared/Components/WangEditor/", "Default.cshtml", false); if (!viewEngineResult.Success) { throw new InvalidOperationException($"Couldn"t find view /Shared/Components/WangEditor/Default.cshtml"); } using (var sr = new StringWriter()) { var viewContext = new ViewContext(); viewContext.HttpContext = _httpContextAccessor.HttpContext; viewContext.ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = new WangEditorConfig() { Id = Id ?? Utils.GetIdByName(Field?.ModelExplorer.Container.ModelType.Name + "." + Field?.Name), Name = Name ?? Field?.Name, Value = Field?.Model?.ToString(), Height = Height } }; viewContext.Writer = sr; viewEngineResult.View.RenderAsync(viewContext).GetAwaiter().GetResult(); output.TagName = "div"; output.TagMode = TagMode.StartTagAndEndTag; output.Content.SetHtmlContent(sr.ToString()); } } } public class WangEditorConfig { public string Id { get; set; } public string Name { get; set; } public string Value { get; set; } public int Height { get; set; } }}
cshtml,使用razor视图引擎编写可读性就好了很多。
@using TagHelpers;@model WangEditorConfig<script type="text/javascript"> (function(){ var wEditor = window.wangEditor; var editorConfig = { placeholder: "请输入...", onChange(editor) { var hidden = document.getElementById("@(Model.Id)-hidden"); var html = editor.getHtml(); hidden.value=html; } } var editor = wEditor.createEditor({ selector: "#@(Model.Id)-editor-container", html: "@Html.Raw(Model.Value)", config: editorConfig, mode: "default", // or "simple" }) var toolbarConfig = {} toolbarConfig.excludeKeys = [ "insertVideo", "insertImage" ]; var toolbar = wEditor.createToolbar({ editor, selector: "#@(Model.Id)-toolbar-container", config: toolbarConfig, mode: "simple", // or "simple" }) console.log(toolbar.getConfig().toolbarKeys); }()); </script>
关键词:
之前使用wtm来进行快速开发wtm框架见:https: wtmdoc walkingtec cn
06月28日 07:52
SMM6月27日讯,南都电源公告,公司中标郸城县集中式共享储能电站建设项
06月28日 08:08
大皖新闻讯6月27日8时46分,芜湖市交通执法支队水上执法应急救助中心接
06月28日 07:49
截至26日,今年全国31个省区市的高考录取控制分数线都已公布。如何报考
06月28日 07:52
东方国信在互动平台表示,公司数字人已在业务中有应用,并产生收益。另
06月28日 07:53
近日,新款奔驰G500正式上市,售价189 90万。售价比现款略有上涨。
06月28日 08:01
新时期下的老年人心理健康难题,该何以破局?,人生,抑郁症,心理问题,心
06月28日 07:56
人民网北京6月26日电(黄盛)据中国船舶工业行业协会日前发布的2023年1
06月28日 08:06
端午节假期,旅游市场表现亮眼。文旅部6月24日晚披露,端午节假期,国
06月28日 07:48
当然是我自制的老卤牛肉:大块牛肉炖得酥软棉嫩,卤汁充盈在一道肉质纤
06月28日 07:58
胡锡进炒股首日赚104 78元称以后会陆续加仓
06月28日 07:49
股票成交量怎么计算?成交量就是证券买方和证券卖方撮合成交的数量总和
06月28日 07:49
证券之星讯,根据6月26日市场公开信息、上市公司公告及交易所披露数据
06月28日 07:46
鑫悦人生养老年金保险适合什么样的人购买?1 希望在退休后享受稳定收
06月28日 07:50
为进一步加强校园消防安全工作,杜绝火灾事故发生,近日来,安徽省
06月28日 07:50
相信目前很多小伙伴对于信用卡都比较感兴趣,那么小搜今天在网上也
06月28日 07:50
近日,一段名为“VISION”的视频在YouTube上分享,展示了经典游戏《反
06月28日 08:00
目前31个省区市2023高考录取控制分数线均已公布↓↓祝所有考生好运
06月28日 08:03
《破冰72小时》武汉首映会6月的武汉见证了一次特殊的缘分。湖北本土缉
06月28日 08:03
舜网国内频道发布国内最新鲜的新闻,国内热点事件和民生事件。
06月28日 07:46
6月26日,文化和旅游部部长胡和平在北京会见来访的新西兰旅游部长佩尼
06月28日 08:01
为传承红色基因,厚植爱国主义情怀,赓续红色血脉,6月26日晚,南华西
06月28日 07:43
五山君了解到,因教学工作需要华南理工大学附属实验学校面向社会公开招
06月28日 07:42
【报道实习记者詹慧娟】据俄新社6月27日报道,俄罗斯常驻联合国副代表
06月28日 08:05
6月25日,“青春同行共享未来”两岸新媒体中华文化河南创享行活动采访
06月28日 07:46
宝山区淞南镇淞南三村居委密切关注社区老年人的生活需求,通过排查梳理
06月28日 07:54
为避免强降雨可能引发的地质灾害威胁,共组织331起避险转移。
06月28日 07:43
近日兰州地铁2号线迎来最新进展6月17日兰州市轨道交通有限公司发布了关
06月28日 07:58
神舟十六号航天员乘组5月30日进驻中国空间站以来,已经过去了近一个月
06月28日 08:03
6月27日盘中消息14点4分索菲亚002572触及涨停板目前价格1859上涨100其
06月28日 08:00