我不明白tagbuilder和@helper
之间的区别例如:
@helper TestHelper(string name , string id , int value)
{
if(value>3)
{
<p name="@name" id="@id">@value</p>
}
}
帮助程序可以创建标记,那么为什么或何时使用tagbuilder?
答案 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
的信息