在Tag Helper属性中选择路径

时间:2017-04-26 06:55:01

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

假设我想创建一个自定义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属性也被定义为字符串。有什么神奇的事情发生了吗?

1 个答案:

答案 0 :(得分:2)

AFAIK是HTML属性的visual studio工具的神奇之处。它与标记助手或aspnet核心无关。