簡體   English   中英

Tagbuilder和@helper有什么區別

[英]What is the difference between Tagbuilder and @helper

我不明白tagbuilder和@helper有什么區別

例如:

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

助手可以創建標簽,那么為什么或何時使用tagbuilder?

@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的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM