Tagbuilder和@helper之间有什么区别

本文关键字:什么 区别 之间 @helper Tagbuilder | 更新日期: 2023-09-27 18:27:27

我不明白tagbuilder和@helper 之间的区别

例如:

@helper TestHelper(string name , string id , int value)
{
    if(value>3)
    {
        <p name="@name" id="@id">@value</p>
    }
}

助手可以创建一个标签,那么我们为什么或何时使用标签生成器呢?

Tagbuilder和@helper之间有什么区别

@helper用于定义视图中可重用的辅助方法。例如,在您的情况下,您已经定义了TestHelper以基于某些条件生成<p>标记,因此无论您在哪里需要<p>标记,都可以调用TestHelper方法。而TagBuilder用于创建具有指定标签名称的新标签。例如,下面的扩展方法使用TagBuilder生成img输入。

using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1.Helpers
{
    public static class ImageHelper
    {
        public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
        {
            return Image(helper, id, url, alternateText, null);
        }
        public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
        {
            // Create tag builder
            var builder = new TagBuilder("img");
            // Create valid id
            builder.GenerateId(id);
            // Add attributes
            builder.MergeAttribute("src", url);
            builder.MergeAttribute("alt", alternateText);
            builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            // Render tag
            return builder.ToString(TagRenderMode.SelfClosing);
        }
    }
}

现在要渲染,可以将其定义为

@Html.Image("img1", <<Src of image>>, <<Name Of Image>>)

TagBuilder提供了添加类和合并属性的功能。你可以在这里阅读关于TagBulider的