假设我想创建一个自定义ImageTagHelper,它从数据库字段加载图像名称并生成IMG。由于只有来自数据库的名称,您必须指定一个文件夹,其中存在所有图像。
Tag Helper看起来像:
[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
属性也被定义为字符串。有什么神奇的事情发生了吗?
答案 0 :(得分:2)
AFAIK是HTML属性的visual studio工具的神奇之处。它与标记助手或aspnet核心无关。