TagHelper
を使用して、私のウェブサイトのmeta
タグの一部を書き直そうとしています。TagHelper <meta>タグ
次の属性を持つmeta
タグのそれぞれについて:data-data-main,data-src
、これらの属性の1つの値を置き換えたいと思います。
例えば、これはオリジナルです:
<meta name="js" content="script" data-async="true" data-data-main="requirejs/product-overview/init" data-src="/js/libs/require.js">
私はこれに、これを変換したい:
<meta name="js" content="script" data-async="true" data-data-main="http://cdn.website.nl/8c87f33ca5acc7fdb9186d6a497642784685aabade058d3530bdf6d30168cfcd.js" data-src="/js/libs/require.js">
変更唯一の事はdata-data-main
属性である:それは今URLを指しますローカルファイルの代わりにCDNに保存します。
TagHelper
をした:不正な形式の 'メタ' タグヘルパーを発見
:
[HtmlTargetElement("meta", Attributes = "[data-data-main],[data-src]")] public class MetaScriptTagHelper : TagHelper { private readonly BluenotionSiteSettings _bnSiteSettings; private readonly SiteTemplateService _templateService; public MetaScriptTagHelper(BluenotionSiteSettingsFiller bnSiteSettingsFiller, SiteTemplateService templateService) { _bnSiteSettings = bnSiteSettingsFiller.Create(HttpContext); _templateService = templateService; } [ViewContext] public ViewContext ViewContext { get; set; } private HttpContext HttpContext => ViewContext.HttpContext; public override void Process( TagHelperContext context, TagHelperOutput output) { var dataDataMainValue = context.AllAttributes["data-data-main"].Value.ToString(); var localPath = @".\wwwroot\js\" + dataDataMainValue.Replace('/', '\\') + ".js"; var siteTemplateId = _templateService.SiteTemplateBySiteIdAsync(_bnSiteSettings.SiteId); var cdnPath = _templateService.GetResourceByName(siteTemplateId, localPath); output.Attributes.Add("data-data-main", cdnPath); } }
悲しいことに、それは例外を返します。タグヘルパーは開始タグと終了タグを持つか、自己終了する必要があります。
私は不正な形式のmeta
タグはので、私は問題がある見当がつかないが何であるかをデバッグすることはできません
(なし、さらにスタックトレース/情報が不正なメタタグが何であったかを示すために)。助言がありますか?
うーん、それは 'スラッシュすることになっていません/ '? – juunas
@ youunasあなたが正しい、編集されています。ありがとう! – nbokmans
TagHelperで非自己閉包型にするには、TagStructureがTagStructure.WithoutEndTagであることを指定することもできます。例:https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs#L18 –