【发布时间】:2023-03-27 07:28:01
【问题描述】:
假设我想创建一个自定义 ImageTagHelper,它从数据库字段加载图像名称并生成一个 IMG。由于只有名称来自数据库,因此您必须指定一个文件夹,其中所有图像都存在。
标签助手看起来像:
[HtmlTargetElement("image", Attributes = ForAttributeName, TagStructure = TagStructure.WithoutEndTag)]
public class ImageTagHelper : Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
{
public ImageTagHelper(IHtmlGenerator generator)
{
}
public ModelExpression For { get; set; }
/// <summary>
/// Path to picture
/// </summary>
public string ImagePath { get; set; }
/// <summary>
/// Extension
/// </summary>
public string Extension { get; set; }
/// <summary>
/// Alt text
/// </summary>
public string Alt { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "img";
output.TagMode = TagMode.SelfClosing;
var src = ImagePath + For.ModelExplorer.Model + "." + Extension;
output.Attributes.Add("src", src);
output.Attributes.Add("alt", Alt);
}
}
在 ASP.NET Razor 中我会写:
<image asp-for="Id" image-path="~/images/" alt="No picture" extension="png"/>
在image-path-attribute 中输入文本时,如何在 wwwroot 中选择路径?我查看了GitHub ImageTagHelper source code,但src 属性也被定义为字符串。有什么神奇的事情发生了吗?
【问题讨论】:
标签: c# razor asp.net-core asp.net-core-mvc tag-helpers