Наследование от 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()
Другие вопросы по тегам