MVC – создание новых представлений без добавления действий в контроллер
Вопрос
Я работаю над мини-приложением, похожим на CMS, с использованием asp.net MVC 1.0 (я обновлю его после выхода версии 2.0).Одна из функций, которая мне нужна и которая очень важна для CMS, — это возможность администратора добавлять страницы на свой сайт.
По сути, если администратор хочет добавить страницу под названием «Ссылки», я хочу, чтобы он мог сделать это без каких-либо хлопот, связанных с добавлением действия в контроллер и компиляцией новой сборки.
У меня есть идея решения, и я хочу знать, что думает сообщество.
Я думаю, что мне следует написать класс (ради аргументов назовем его UserGeneratedGenericController), который расширяет класс Controller.В этом классе у меня будет одно действие, которое считывает параметр и перенаправляет его в представление, соответствующее параметру, переданному действию.
Мне также придется редактировать маршрутизацию в Global.asax.cs
файл
поэтому/UserGeneratedGenericController/Links
произойдет то же действие, которое/UserGeneratedGenericController/News
попадет, но отобразит виды по желанию.
Что ты скажешь?Мне интересны ваши комментарии по этому подходу и ваши предложения по другим подходам.
Решение
я думаю, что то, что ты представил, это правильный путь
Другие советы
Вы хотите взять заголовок страницы и создать для него уникальный URL-адрес, а затем иметь возможность загружать контент из базы данных на основе URL-адреса (используя URL-адрес в качестве идентификатора, а не фактический идентификатор базы данных). ).
public ActionResult Index(string UrlSlug) {
// Get Content For Page {UrlSlug}
}
Таким образом, ваш маршрут будет /Pages/{UrlSlug}, а образец — /Pages/Links.Затем ваше действие Index на вашем PagesController будет извлекать фрагмент URL-адреса (ссылки), загружать соответствующий контент из хранилища и отображать контент внутри вашего основного макета.Я думаю, вы думали в этом направлении: просто убедитесь, что когда пользователь добавляет страницу, вы создаете для нее уникальный URL-адрес.Замените пробелы подчеркиванием, удалите специальные символы и т. д., чтобы создать безопасный ключ URL-адреса, который можно будет использовать для загрузки информации о странице при ее запросе.