Лучший способ реализовать вспомогательный метод Html?

StackOverflow https://stackoverflow.com/questions/258280

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Затем вы вызываете помощника с помощью <% вместо <% =.

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

Другие советы

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

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

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

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

Спасибо, Эйлон

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top