91成人破解版_男人网站视频_精品天堂_国产一级毛片国语版_日韩精品1区2区3区_免费人成网站wwwfefe

首页 > 关注 > > 正文

Asp.net core使用Razor试图引擎编写TagHelper-环球看点

2023-06-27 20:20:49    来源:博客园

之前使用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

关键词:

上一篇:敬礼娃娃高考斩获好成绩 当前头条
下一篇:最后一页

热点话题

热点推荐

头条

? 主站蜘蛛池模板: 狠狠色噜噜狠狠狠777米奇小说 | 精新精新国产自在现拍欣赏网 | 久久精品噜噜噜成人 | 欧美精品一区二区蜜臀亚洲 | 毛片网站在线观看 | 久久99国产精一区二区三区! | 日本理伦片和搜子同居的日子 | 一区二区三区日本 | 深夜特黄a级毛片免费播放 深夜偷偷看视频在线观看 深夜一级毛片 | 国产免费一区二区三区免费视频 | 国产婷婷综合在线视频中 | 国产亚洲精品网站 | 国产乱人对白 | 国产肉丝袜视频在线观看 | 国产激情艳情在线看视频 | 超碰cao已满18进入离开官网 | 免费做爰猛烈吃奶摸视频在线观看 | 综合图片亚洲网友自拍 | 中文字幕在线网 | 精品欧洲av无码一区二区三区 | 久久精品国产亚洲av网站 | 18禁无遮挡羞羞污污污污免费 | 成人免费视频国产 | 亚洲国产成人精品青青草原100 | 国产资源网站 | 91久久老司机福利精品网 | 国产精品宾馆在线精品酒店 | 亚洲成人精品在线 | 久久综合伊人77777 | 亚洲精品欧洲久久婷婷99 | 97porm国内自拍视频 | 四虎国产精品永久地址入口 | 精品国产免费久久久久久 | 日韩精品专区在线影院重磅 | 99久久国产综合精品女小说 | 一本综合久久国产二区 | 射精专区一区二区朝鲜 | 亚洲美女人黄网成人女 | 亚洲av成人精品日韩一区 | 成人在线免费电影 | 男人添女人下部高潮全视频 |