Tagbuilder和@helper有什么区别

时间:2015-12-18 09:45:15

标签: c# asp.net-mvc

我不明白tagbuilder和@helper

之间的区别

例如:

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

帮助程序可以创建标记,那么为什么或何时使用tagbuilder?

1 个答案:

答案 0 :(得分:2)

@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 here

的信息