gpt4 book ai didi

c# - ASP.NET MVC 中的 string.Format 和 TagBuilder 之间有什么区别(如果有)?

转载 作者:太空狗 更新时间:2023-10-30 00:36:34 26 4
gpt4 key购买 nike

我的 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(),还有一些可以互换使用。

label 标签相当简单,因此只返回格式化字符串而不是像这样为标签实例化 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 中的 string.Format 和 TagBuilder 之间有什么区别(如果有)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com