【问题标题】:Why are taghelper not rendered on server为什么 taghelper 没有在服务器上呈现
【发布时间】:2021-01-08 05:52:24
【问题描述】:

我创建了一个 taghelper,它使用多个来源呈现图形

public class CustomFigureTagHelper : TagHelper
{
    public HelpersCore.Entity.PictureData  PictureData { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (PictureData != null)
        {
            output.TagName = "figure";    // Replaces <email> with <a> tag           
            StringBuilder sb = new StringBuilder();
            sb.Append("<picture>");
            if (!string.IsNullOrEmpty(PictureData.Image2))
                WriteSource("image/webp", PictureData.Image2, sb);
            WriteSource("image/jpg", PictureData.Image1, sb);
            sb.Append("<img alt=\"" + PictureData.AlternateText + "\" class=\"lazyload\" data-cms-image=\"" + PictureData.Image1 + "\" src=\"" + PictureData.Thumbnail + "\" style=\"width:100%;\">");
            sb.Append("</picture>");
            if (PictureData.ShowCaption && !string.IsNullOrEmpty(PictureData.AlternateText))
            {
                sb.Append("<figcaption>");
                sb.Append(PictureData.AlternateText);
                sb.Append("</figcaption>");
            }
            output.Content.SetHtmlContent(sb.ToString());
            return;
        }

        output.Content.SetContent(string.Empty);
    }

    private void WriteSource(string imageformat, string image, StringBuilder sb)
    {
        sb.Append("<source type=\"" + imageformat + "\" srcset=\"" + image + "\" data-srcset=\"" + image + "\">");
    }
}

taghelper 在未编译的视图中使用

@{
    if (!string.IsNullOrEmpty(Model.Settings))
    {
        Newtonsoft.Json.Linq.JObject settings = Newtonsoft.Json.Linq.JObject.Parse(Model.Settings);
        if (settings["ImagePath"] != null)
        {
            Comito.Core.HelpersCore.Entity.PictureData pictureData = new Comito.Core.HelpersCore.Entity.PictureData();
            pictureData.Image1 = settings["ImagePath"] != null ? "/CMSContent/Media/Images/lg/" + settings["ImagePath"].ToString() : string.Empty;
            pictureData.Image2 = settings["ImagePathWebP"] != null ? "/CMSContent/Media/Images/lg/" + settings["ImagePathWebP"].ToString() : string.Empty;
            pictureData.Thumbnail = settings["ImagePath"] != null ? "/CMSContent/Media/Images/xs/" + settings["ImagePath"].ToString() : string.Empty;
            <custom-figure picture-data="pictureData"></custom-figure>
        }
    }
}

在 localhost (IIS) 上,taghelper 呈现良好

<figure data-theme="mytheme">
  <picture>
    <source type="image/webp" srcset="/CMSContent/Media/Images/lg/42.webp" data-srcset="/CMSContent/Media/Images/lg/42.webp">
    <source type="image/jpg" srcset="/CMSContent/Media/Images/lg/42.jpg" data-srcset="/CMSContent/Media/Images/lg/42.jpg">
   <img alt="" class="lazyload" data-cms-image="/CMSContent/Media/Images/lg/42.jpg" src="/CMSContent/Media/Images/xs/42.jpg" style="width:100%;">
</picture>

但在我的服务器(也是 IIS)上,我只是生成 taghelper 的原始输出:

<custom-figure picture-data="pictureData"></custom-figure>

【问题讨论】:

    标签: c# asp.net-core-mvc tag-helpers


    【解决方案1】:

    在我的本地主机上,只需要引用 _ViewImports.cshtml 中的标签,但在服务器上我必须放置

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    @addTagHelper  *, Comito.Core.HelpersCore
    

    在视图上

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2013-12-31
      • 2012-05-20
      • 1970-01-01
      • 2010-10-18
      • 2021-12-05
      相关资源
      最近更新 更多