Наследование от HtmlHelper вместо его расширения
Я создаю набор помощников для рендеринга совместимых Twitter Bootstrap HTML. На мой взгляд, у меня есть два варианта, как сгруппировать эти методы:
- Расширьте HtmlHelper с префиксом методов на TB
- Создать новый класс
TBootHelper
который содержит методы
Во втором случае, чтобы получить TBoot
помощник доступен, разработчик добавил бы
<pages pageBaseType="Twitter.Bootstrap.Mvc.TBootViewPage">
Чтобы это ~/Views/web.config
(как указано @darin)
Или создайте экземпляр помощника, когда это необходимо
@using Twitter.Bootstrap.Mvc
var TBoot = new TBootHelper<TModel>(Html);
Мой вопрос, должен ли я создать TBootHelper
класс или просто добавить методы к HtmlHelper
?
1 ответ
Я бы пошел с созданием пользовательских TBootHelper
и пользовательское базовое представление, от которого будут наследоваться все представления и которое будет иметь свойство типа TBootHelper
,
И вместо того, чтобы заставлять разработчика добавлять @inherits Twitter.Bootstrap.Mvc.TBootViewPage<TModel>
к каждому шаблону Razor, в котором он хочет использовать этот пользовательский помощник, я бы добавил его в ~/Views/web.config
файл, раз и навсегда:
<pages pageBaseType="Twitter.Bootstrap.Mvc.TBootViewPage">
а потом во взглядах:
@model MyViewModel
@TBoot.Foobar()