最新要闻
- 美国货运“龙”飞船将运送科学样本返回地球
- 提高安全意识,培华小学开展消防演练活动-全球热文
- 大乐透晒票23072期,身材不好就去锻炼,没有钱就努力去赚
- 【全球聚看点】B站直播电商,终于站起来了
- 网友建议:汕头万象城、苏宁广场建连廊天桥! 资讯
- 恢复神速!35岁莎拉波娃产后登山,当妈还不到10天,不需要坐月子-天天微动态
- 要闻:(高质量发展调研行)中国“医疗特区”博鳌乐城使用特许药械人群快速增长
- 资讯:2023年天津高考分数线公布:普通本科472分
- 淅川香花镇举行首届果树栽培管理技能大赛 全球讯息
- 头狼:黄金1934以及1933持续加仓空,直接五连胜收割
- 1922年,23岁的张大千向15岁黄凝素表白:“你才是我的真爱!”但没过几年,张大千就想再娶一个妾!|焦点速讯
- 美媒又开始放风:美财政部长耶伦计划7月初访问北京
- B社官方澄清:《星空》Xbox标准实体版里有光盘!|环球热资讯
- 日本央行国债持有比例连续三季度超五成
- 天天速看:东亚海洋合作平台青岛论坛|联合国教科文组织分委会主席:希望在未来有更多中国和非洲的年轻人开展持续不断的合作
- 110千伏庙前变电站投运 全面解决西站片区用电负荷需求
广告
手机
每日视讯:湘雅医院多科合作完成侵犯颅内巨大腮腺恶性肿瘤联合根治手术
心理咨询师报考条件及要求 全球速看
- 每日视讯:湘雅医院多科合作完成侵犯颅内巨大腮腺恶性肿瘤联合根治手术
- 心理咨询师报考条件及要求 全球速看
- 贵州7地入选全国2023年避暑旅游优选地
- 传承下去,文水壁画
- 广州南站ICC项目最新进展:2025年起分阶段落成
- 格力博(301260)6月26日主力资金净买入691.36万元|今日播报
家电
Asp.net core使用Razor试图引擎编写TagHelper 观天下
之前使用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>
关键词:
Asp.net core使用Razor试图引擎编写TagHelper 观天下
《我爱你!》:暮色未尽,爱不凋零
广东通报18批次不合格食品,检出农兽药残留、食品添加剂超限量使用等
每日视讯:湘雅医院多科合作完成侵犯颅内巨大腮腺恶性肿瘤联合根治手术
新华全媒+|端午假期激发消费市场活力
心理咨询师报考条件及要求 全球速看
泰安市文旅局积极开展“珍爱生命·远离毒品”宣传教育活动
贵州7地入选全国2023年避暑旅游优选地
请防范!河北省气象台继续发布高温橙色预警信号
新城法院与西北政法大学共建企业合规研究基地
未央法院案件入选“全省法院房地产及建工领域纠纷诉源治理十大典型案例”
传承下去,文水壁画
2023年度深圳积分入户申报启动
环球最新:头部财经媒体助力!武汉经济频道重磅推出财经节目带
黎巴嫩真主党称击落侵犯黎领空的以色列无人机
广州南站ICC项目最新进展:2025年起分阶段落成
山东出台绿色低碳高质量发展项目管理办法 加速建构交通基础设施建设
新村街道金海花园社区:拆除私人地锁 维护停车秩序
奥园美谷回应股价涨幅异常:已收到中国信达10个诉状 快播报
世界即时看!爆款男士小白鞋,百搭又增高!
格力博(301260)6月26日主力资金净买入691.36万元|今日播报
亚联发展(002316)6月27日9点34分触及涨停板|当前快看
让生僻字走出“数字化之困”_全球热消息
焦点短讯!网经社莫岱青:流量见顶成为直播电商和传统电商共同问题
每日短讯:【中科寒武纪】参评“维科杯·OFweek 2023人工智能行业年度评选”
全球热门:老人游园突感不适 工作人员及时送医
每日视点!招商轮船:6月26日融券卖出8.75万股,融资融券余额5.37亿元
辽宁朝阳建平县发布暴雨橙色预警 需注意旱涝急转带来的影响
当前讯息:芯联芯回应“7项仲裁主张6项被驳回”,指控龙芯中科误导公众和监管!
朱啸虎、傅盛激辨GPT背后,AI 大模型“泡沫”要破了?|钛媒体焦点
美国货运“龙”飞船将运送科学样本返回地球
IGN 投票显示玩家对《漫威蜘蛛侠2》的画面印象最深刻
高校领导被举报涉作风问题,当地纪委监委已开展调查核实
wps把a3格式转换成a4的方法_环球百事通
微软打造 13 亿参数小型 LLM AI 模型,号称实际效果胜于千亿参数 GPT-3.5 每日观点
提高安全意识,培华小学开展消防演练活动-全球热文
VP刀叨叨:Inflame锐评亚运会名单,XinQ是点外卖的?为何没有Y啊|环球观点
国米留后路,无惧3冠功臣投米兰,签皇马弃将,冲冠,迪巴拉拼了-热消息
热消息:很多宝妈还不知道:玩具其实是被爱整洁的父母浪费掉的
2023北京门头沟区三伏贴预约信息汇总(时间+地点)
“给穷人指路”的张雪峰:讲课能赚几百万,一家公司要上市?-环球观点
天天微速讯:润和软件(300339.SZ):计划将于近期发布AI中枢平台的公测版本
长亮科技(300348.SZ):与华为在信创领域的多个方面展开了合作
【世界报资讯】时政微观察丨“千万工程”何以深得民心?
大乐透晒票23072期,身材不好就去锻炼,没有钱就努力去赚
观天下!大摩知名空头再度唱衰美股:大幅回调的风险很高
今日热门!浓浓端午味 回味端午情--文峰区小营小学端午节主题活动
暗黑先锋起号攻略介绍 暗黑先锋斗帝传奇前期怎么才能快速起号
福岛核排污最新进展:排污海底隧道已基本完工 环球信息
网购格力空调收到的竟是“木各力”
无路,闯出路 “坦克300环游记” 征服银沙湾沙漠_世界实时
天天关注:放弃挣扎?现代汽车将出售两家在华工厂
上证破位补跌!|焦点观察
当前视点!上海豪宅开始崩盘了!1亿+豪宅今年挂牌59套,汤臣一品降价3000万
史无前例,印度一口气签500架客机,还学中国提了个要求_全球热讯
第15次高考662分圆梦清华?广西考生唐尚珺:“都是假的,梦想之路漫漫”
观焦点:根据网络安全法的规定有下列 根据网络安全法的规定应当
【全球聚看点】B站直播电商,终于站起来了
网友建议:汕头万象城、苏宁广场建连廊天桥! 资讯
环球关注:行驶中的公交车“趴窝”路中,关键时刻他们出手了
滕州市建工集团纪委开展党性教育暨爱国主义教育学习|天天观天下
恢复神速!35岁莎拉波娃产后登山,当妈还不到10天,不需要坐月子-天天微动态
中午12点,周琦宣布生涯决定,睢冉运作完成,新东家送上天价合同
恒大飞翼秒变国足新惊喜?2优势助他征服里皮亚洲杯必有他
全球播报:马斯克选定加拿大格斗冠军做陪练 准备和扎克伯格展开对决
《狂飙》杨健才是最大的赢家,出狱之后的日子,绝对过得比安欣好 当前滚动
长沙八旬老人突然病危,家人在垃圾桶发现安眠药空瓶,医护团队紧急救治 环球微速讯
俄战机在黑海上空对英国战机实施伴飞_当前热门
枝江市多形式开展“6.26”国际禁毒日宣传活动|全球今热点
世界看点:今日主力资金净流入房地产、银行、文化传媒等板块 拓维信息大涨 主力资金净买入7.92亿元
我乐家居6月27日打开涨停
环球热议:昆明梦想医疗美容医院正规吗?机构擅长项目、口碑信息分享
青春山东 共享未来|勇担“新使命”:新时代青年将如何通过2023国际青年交流大会展现作为?
小米汽车14.99万起售?小米辟谣:不实消息,产品明年才发布
价格战是“饮鸩止渴”!人工智能或将带来云计算市场“变奏” 观热点
华南农业大学珠江学院是985还是211 华南农业大学珠江学院排名多少_全球看热讯
新动态:崔东树:1-5月新建29万个公桩和86万个私桩 未来需要进一步构建高质量充电基础设施体系
亚马逊张文翊:服务细分领域的定制化基础大模型将改变各行各业的“游戏规则”-世界视点
世界快资讯:中国二十二冶集团装配式公司创新学习形式建设学习型团队
央行:5月份债券市场共发行各类债券54561.6亿元
实践讲解强化学习之梯度策略、添加基线、优势函数、动作分配合适的分数-热点
重点聚焦!金城广场对比博鳌椰风海岸湖南人买哪个好?在文昌市买房子哪里最低?
要闻:(高质量发展调研行)中国“医疗特区”博鳌乐城使用特许药械人群快速增长
建设银行社保卡激活可以在手机上激活吗 官方这样说 环球速讯
短讯!6月26日在岸人民币对美元16:30收盘价跌281个基点
c盘哪些文件可以删除(c盘有哪些文件可以删除)_世界时快讯
环球观焦点:上海市地方金融监管局局长周小全会见复星国际董事长郭广昌一行
花几千元就能“拿证” 高考志愿填报市场乱象调查
资讯:2023年天津高考分数线公布:普通本科472分
历时八个月,桂林这地的“民生桥”建好了
每日消息!日本东京电力公司:用于排放福岛第一核电站核污染水的海底隧道建设工程已全部完工
淅川香花镇举行首届果树栽培管理技能大赛 全球讯息
头狼:黄金1934以及1933持续加仓空,直接五连胜收割
天天通讯!“复旦本科生泳装照简历”热传,涉事机主回应:应是被人恶搞
烹饪不是“过家家” 警惕儿童厨具成“安全杀手” 全球微资讯
全球速看:拆迁家庭财产的解决
世界实时:CPO概念股盘初下挫 华西股份跌停
环球今热点:招联金融逾期1个月影响信用吗?利息多少?
环球热推荐:比亚迪是什么意思网络用语
中级经济师《人力资源》每日一练(2023.06.27)