Я разрабатываю приложение ASP.NET MVC, где содержимое для любой страницы можно вытащить из базы данных, если оно существует, и отображается на странице.Разве хорошая идея поставить логику доступа к контенту в BaseController?
Это делается для того, чтобы нетехнические лица могли редактировать контент без необходимости входить в исходный код (например, виды) и изменять вещи.
Как я это делаю, каждый контроллер происходит от базового контроллера. Базовый контроллер перегружает «OnActionExecuted» и использует эту возможность, чтобы вытащить любой контент, назначенный текущему Action/Controller.
Если действие возвращает ViewModel, которое происходит из 'ContentViewModel', оно заполняет свойство Text для ViewModel текстом из базы данных.
А затем текст визуализируется в представлении.
У вас есть недостаток в этом дизайне?
Было бы лучше, если бы вместо базового контроллера у меня были расширения HtmlHelper для вытягивания контента, который я вызываю из представления?
Одна из причин, по которой я прошу об этом, заключается в том, что мой собственный базовый контроллер мешает вызвать «Html.RenderAction», который, похоже, ожидает, что указанный контроллер будет непосредственно наследоваться от «System.Web.Mvc.Controller».