MVC: возможно ли переопределить действие контроллера? - PullRequest
1 голос
/ 06 мая 2011

Сначала немного о том, зачем мне это нужно.Я в настоящее время создаю CMS.Если вы представляете, что в этой CMS есть PageController, который предоставляет всю информацию, необходимую для стандартной страницы, контент, навигацию и т. Д.

Теперь CMS можно изменить для каждого клиента, использующего ее, и если клиенту требуется дополнительная / другая информацияна их страницах я хотел бы переопределить PageController по умолчанию на другой, специально разработанный для их нужд.

Вот что я пробовал:

Базовый контроллер

namespace CMS.Core.Controllers {
    public class PageController : Controller {
        public virtual ActionResult DisplayHome() {
            // Logic
            return View();
        }
    }
}

Клиентский контроллер

namespace CMS.ClientCore.Controllers {
    public class PageController : Core.Controllers.PageController {
        public override ActionResult DisplayHome() {
            return Content("Client Home"); // Just for testing
        }
    }
}

Маршрут

routes.MapRouteInLowercase(
    "Home",
    "",
    new { controller = "Page", action = "DisplayHome" },
    new[] { "CMS.Core.Controllers", "CMS.ClientCore.Controllers" }
);

Ошибка

Запрос 'Page' обнаружил следующие подходящие контроллеры: PCCMS.Core.Controllers.PageController

PCCMS.ClientCore.Controllers.PageController

Причинаошибки очевидны, так есть ли альтернативный способ переопределить действие контроллера / контроллера?

1 Ответ

2 голосов
/ 06 мая 2011

Вы подходите к проблеме неправильно.

Создайте IContentProvider, который используется PageController, и позвольте поставщику контента выяснить, какой контент нужен текущему клиенту.

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