我创建了一个html帮助器

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

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

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

您还有其他任何问题/改进吗?

有帮助吗?

解决方案

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

然后用<!> lt;%而不是<!> lt;%=来调用助手。

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

其他提示

BTW我们在ASP.NET MVC中有各种渲染技术的命名模式。

返回一串他们所属内容的助手应该被命名为他们的名字。例如,Url.Action()和Html.TextBox()返回那些确切的项目。因此,这些助手应该与<!> lt;%=%<!> gt;一起使用。语法。

直接渲染到输出流的助手应该以Render开头。例如,Html.RenderPartial()。这些用于<!> lt; %% <!> gt;语法。

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

谢谢, Eilon

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top