ASP.NET MVC. Расширение HtmlHelper против пользовательского класса - PullRequest
2 голосов
/ 16 февраля 2010

В чем преимущества расширения HtmlHelper вместо создания пользовательского класса.

f.e. <% = Html.Table (data)%> vs <% = CustomClass.Table (data)%>

Ответы [ 2 ]

3 голосов
/ 16 февраля 2010

Поскольку помощник HTML уже определяет кучу полезных методов, которых у вас не будет в вашем пользовательском классе, и, что наиболее важно, у вас есть доступ к HttpContext. Конечно, вы можете сказать, почему бы не передать HttpContext моему пользовательскому классу, но тогда вместо <%= CustomClass.Table(data) %> у вас будет <%= CustomClass.Table(data, HttpContext) %>, что ИМХО более уродливо.

2 голосов
/ 17 февраля 2010

Как вы и предполагаете, класс HtmlHelper - это просто метод .NET, который возвращает строку (обычно состоящую из разметки HTML). Таким образом, технически это не отличается от написания пользовательского класса тем же.

Однако ключевое преимущество использования HtmlHelper по сравнению с написанием пользовательского класса заключается в том, что он следует обычному подходу к визуализации элементов управления HTML в виде ASP.NET MVC. Используя / расширяя HtmlHelpers, становится более очевидным, что ваш метод предназначен для вывода разметки HTML для элемента управления. Если бы вы написали собственный класс, чтобы сделать то же самое, было бы менее очевидно, что цель состоит в том, чтобы отобразить элементы управления HTML, и другие разработчики могут не обнаружить его так легко.

Многие считают, что ключевым принципом ASP.NET MVC является одобрение * соглашения по сравнению с конфигурацией *. Используя HtmlHelpers, вы поддерживаете этот принцип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...