0

我创建了一个 html 助手

Html.BreadCrumb(IDictionary<string, string> crumbs)

其中第一个字符串是标签,第二个字符串是 URL。助手创建所需的 html(无序列表,第一个元素、当前元素、最后一个元素、死元素和分隔符等的一些类)所有工作都很好,但我通过创建一个 stringbuilder 来做到这一点,将所有 html 抽入其中并返回stringbuilder 的内容为字符串。

我认为在这个例子中它并不重要,但是如果一个 Html 助手正在大量生产 html 怎么办?没有办法将它推送到 Response.Write 而不是 stringbuilder 吗?

或者您有任何其他问题/改进?

4

3 回答 3

6

顺便说一句,我们在 ASP.NET MVC 中有一个用于各种渲染技术的命名模式。

返回字符串的助手应该被命名为它们是什么。例如, Url.Action() 和 Html.TextBox() 返回那些确切的项目。因此,这些助手应该与 <%= %> 语法一起使用。

直接渲染到输出流的助手应该以 Render 开头。例如,Html.RenderPartial()。这些与 <% %> 语法一起使用。

使用 IDisposable 模式的助手应以 Begin/End 命名。例如,Html.BeginForm() 和 Html.EndForm()。这些也应该与 <% %> 语法一起使用。

谢谢,艾隆

于 2008-11-04T20:58:02.353 回答
1

当然可以使用 Response.Write 而不是返回字符串;有关示例,请参阅 MVC 源中 System.Web.Mvc.Ajax.Form(在 AjaxExtensions.cs 中)的源。

然后用 <% 而不是 <%= 调用帮助程序。

它会更快吗?我对此表示怀疑,但它很容易测试。

于 2008-11-03T14:27:51.877 回答
0

只要您生成的 HTML 页面的大小合理,我认为您不会有任何性能问题。当你真正开始创建兆字节大小的页面时,你应该问自己,为什么要创建如此巨大的 HTML 文件?

于 2008-11-03T11:03:52.443 回答