Можно ли установить собственный класс в качестве базового класса по умолчанию для моих контроллеров в ASP.NET MVC3? - PullRequest
0 голосов
/ 15 февраля 2011

Я бы хотел унаследовать все мои контроллеры от пользовательского базового класса, который я пишу сам. Я могу изменить строку каждый раз, когда добавляю новый контроллер, но было бы лучше, если бы я мог где-то указать значение по умолчанию, которое там установлено. Таким образом, мне не нужно беспокоиться о том, чтобы забыть об этом, и другим людям, которые позже будут добавлены в проект, будет более легкое время.

Есть ли способ добиться этого?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

Вы можете настроить шаблон T4, который используется, когда вызывается действие Add Controller. По сути, вам придется скопировать шаблон из C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddController\Controller.tt в '~ \ CodeTemplates \ AddController \ Controller.tt` в файле проекта.

Более подробная информация доступна здесь (прокрутите вниз до «Добавление и настройка шаблонов лесов»)

0 голосов
/ 15 февраля 2011

Вы можете сделать это, используя пространства имен: создать класс с именем Controller в том же пространстве имен, что и ваши контроллеры, например ::

namespace UI.Controllers
{
    public class Controller : System.Web.Mvc.Controller
    {
        //Code here
    }
}

и тогда стандартные неквалифицированные ссылки на Controller будут ссылаться на ваш базовый класс вместо System.Web.Mvc.Controller.

Возможно, это сбивает с толку - я бы предпочел просто вспомнить ссылку на базовый класс.

0 голосов
/ 15 февраля 2011

Да, это простая задача.Сначала создайте класс с именем «BaseController», например, который наследуется от Controller.Тогда все ваши контроллеры будут наследоваться от BaseController.

EDIT: я думаю , что использование шаблона T4 для генерации вашего контроллера костюма (называемого BaseController или, возможно, Controller - в зависимости от того, что вы предпочитаете) также будет работать.Я видел, как шотландец Хансельман делал что-то похожее в одной из своих бесед.

...