Лучший способ реализовать метод Html Helper? - PullRequest
0 голосов
/ 03 ноября 2008

Я создал помощник HTML

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

Где первая строка - это метка, а вторая строка - это URL. Помощник создает требуемый html (неупорядоченный список, некоторые классы для первого элемента, текущий элемент, последний элемент, мертвый элемент и разделители и т. Д.) Все работает хорошо, но я делаю это, создавая stringbuilder, закачивая все html в него и возвращая содержимое stringbuilder в виде строки.

Я полагаю, что в этом примере это не так уж важно, но что, если Html-помощник создает большой груз html? Разве нет способа отправить его в Response.Write вместо строителя строк?

Или у вас есть другие проблемы / улучшения?

Ответы [ 3 ]

6 голосов
/ 04 ноября 2008

Кстати, у нас есть шаблон именования в ASP.NET MVC для различных методов рендеринга.

Помощники, которые возвращают строку того, кем они являются, должны называться тем, кем они являются. Например, Url.Action () и Html.TextBox () возвращают эти точные элементы. Таким образом, эти помощники должны использоваться с синтаксисом <% =%>.

Помощники, которые визуализируют непосредственно в выходной поток, должны начинаться с Render. Например, Html.RenderPartial (). Они используются с синтаксисом <%%>.

Помощникам, использующим шаблон IDisposable, следует присвоить имя Begin / End. Например, Html.BeginForm () и Html.EndForm (). Они также должны использоваться с синтаксисом <%%>.

Спасибо, Eilon

1 голос
/ 03 ноября 2008

Конечно, можно использовать Response.Write вместо возврата строки; см. источник для System.Web.Mvc.Ajax.Form (в AjaxExtensions.cs) в источнике MVC для примера.

Затем вы вызываете помощника с <% вместо <% =. </p>

Будет ли это быстрее? Я сомневаюсь в этом, но это легко проверить.

0 голосов
/ 03 ноября 2008

Я не думаю, что у вас возникнут проблемы с производительностью, если размер создаваемых вами HTML-страниц приемлемый. И когда вы действительно начинаете создавать страницы размером в мегабайты, тогда вы должны спросить себя, почему вы создаете такие огромные HTML-файлы?

...