C# 为什么taghelper不能在服务器上呈现
我已经创建了一个taghelper,它用几个源渲染一个图形C# 为什么taghelper不能在服务器上呈现,c#,core,C#,Core,我已经创建了一个taghelper,它用几个源渲染一个图形 public class CustomFigureTagHelper : TagHelper { public HelpersCore.Entity.PictureData PictureData { get; set; } public override void Process(TagHelperContext context, TagHelperOutput output) { if (
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 + "\">");
}
}
公共类CustomFigureTagHelper:TagHelper
{
public HelpersCore.Entity.PictureData PictureData{get;set;}
公共覆盖无效进程(TagHelperContext上下文,TagHelperOutput输出)
{
if(PictureData!=null)
{
output.TagName=“figure”//替换为标记
StringBuilder sb=新的StringBuilder();
某人加上(“”);
如果(!string.IsNullOrEmpty(PictureData.Image2))
WriteSource(“image/webp”,PictureData.Image2,sb);
编写资源(“image/jpg”,PictureData.Image1,sb);
某人加上(“”);
某人加上(“”);
if(PictureData.ShowCaption&&!string.IsNullOrEmpty(PictureData.AlternateText))
{
某人加上(“”);
某人追加(图片数据替代文本);
某人加上(“”);
}
output.Content.SetHtmlContent(sb.ToString());
返回;
}
output.Content.SetContent(string.Empty);
}
私有void WriteSource(字符串图像格式、字符串图像、StringBuilder sb)
{
某人加上(“”);
}
}
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>
}
}
}
@{
如果(!string.IsNullOrEmpty(Model.Settings))
{
Newtonsoft.Json.Linq.JObject设置=Newtonsoft.Json.Linq.JObject.Parse(Model.settings);
如果(设置[“ImagePath”]!=null)
{
Comito.Core.HelpersCore.Entity.PictureData PictureData=新建Comito.Core.HelpersCore.Entity.PictureData();
pictureData.Image1=设置[“ImagePath”]!=null?”/CMSContent/Media/Images/lg/“+设置[“ImagePath”]。ToString():string.Empty;
pictureData.Image2=设置[“ImagePathWebP”]!=null?”/CMSContent/Media/Images/lg/“+设置[“ImagePathWebP”]。ToString():string.Empty;
pictureData.Thumbnail=设置[“ImagePath”]!=null?”/CMSContent/Media/Images/xs/“+设置[“ImagePath”]。ToString():string.Empty;
}
}
}
在本地主机(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
论景观