如何解决为什么TagHelper无法在服务器上呈现
我创建了一个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>
解决方法
在我的本地主机上,仅需要引用_ViewImports.cshtml中的标签,但是在服务器上我不得不放置
@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *,Comito.Core.HelpersCore
在视图上
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。