编程语言
首页 > 编程语言> > c# – ASP.NET MVC中string.Format和TagBuilder之间有什么区别?

c# – ASP.NET MVC中string.Format和TagBuilder之间有什么区别?

作者:互联网

我的ASP.NET MVC应用程序有一个Html Helper文件.他们中的大多数只返回一个格式化的字符串.

以下是我的一个格式化字符串助手的示例:

public static string Label(this HtmlHelper helper, string @for, string text)
{
    return string.Format("<label for \"{0}\">{1}</label>", @for, text);
}

这是一个TagBuilder版本,它给出了与上面相同的结果:

public static string Label(this HtmlHelper helper, string @for, string text)
{
    var builder = new TagBuilder("label");
    builder.Attributes.Add("for", @for);
    builder.SetInnerText(text);
    return builder.ToString(TagRenderMode.Normal);
}

现在,我已经从混合实现中读取/学习MVC的一些站点.有些使用TagBuilder方法,有些使用string.Format(),有些则互换使用.

标签标签相当简单,那么返回格式化的字符串而不是像这样的标签实例化TagBuilder类会“更好”吗?

我不一定担心性能,我只是好奇为什么有些人选择TagBuilder而其他人使用格式化的字符串.

谢谢你的启示!

解决方法:

使用TagBuilder将允许您合并标签上的属性.例如,使用String.Format,如果要在标记上有条件地具有CSS Class属性,则需要执行以下操作:

String.Format("<label {0}>Text</label>", (includeClass ? "class=\"Something\"" : ""));

而使用TagBuilder,您可以使用MergeAttributes()传递键/值的字典.弹出打开Reflector(或抓取源代码)并查看System.Web.Mvc.Html.InputHelper()以了解使用具有大量条件属性的构建器的强大功能.

两者都可以产生相同的输出,但它实际上取决于您希望实现的目标.它还取决于您认为哪些是“更干净”的代码.

标签:c,asp-net-mvc,html-helper,tagbuilder
来源: https://codeday.me/bug/20190610/1214431.html