MVC - Создание новых видов без добавления действий в контроллер - PullRequest
0 голосов
/ 07 декабря 2009

Я работаю над мини-CMS-подобным приложением, использующим asp.net MVC 1.0 (я обновлю его, как только выйдет 2.0). Однажды нужная мне функция, которая очень важна для CMS, - это возможность администратора добавлять страницы на свой сайт.

По сути, если администратор хочет добавить страницу под названием «Ссылки», я хочу, чтобы они могли это делать, не прибегая к каким-либо хлопотам, связанным с добавлением действия в контроллер и компиляцией новой сборки.

У меня есть идея для решения, и я хочу знать, что думает сообщество.

Я думаю, что мне следует написать класс с именем (для примера, давайте назовем его UserGeneratedGenericController), который расширяет класс Controller. В этом классе у меня будет одно действие, которое считывает параметр и перенаправляет его в представление, соответствующее параметру, переданному действию.

Мне также придется редактировать маршрутизацию в Global.asax.cs файле

поэтому /UserGeneratedGenericController/Links ударит по тому же действию, что /UserGeneratedGenericController/News ударит, но отобразит представления по желанию.

Что скажете вы? Мне интересны ваши комментарии по этому подходу и ваши предложения по другим подходам.

Ответы [ 2 ]

1 голос
/ 09 декабря 2009

я думаю, что вы представили путь

0 голосов
/ 07 декабря 2009

Вы хотите взять заголовок страницы и создать для него уникальный URL-слаг, затем вы хотите иметь возможность загружать контент из базы данных на основе URL-слаг (используя вместо URL-адреса слаг, а не фактический идентификатор базы данных).

public ActionResult Index(string UrlSlug) {
  // Get Content For Page {UrlSlug}
}

Таким образом, ваш маршрут будет / Pages / {UrlSlug}, а пример будет / Pages / Links. Тогда действие Index в вашем PagesController приведет к удалению URL-ссылки (ссылок), загрузит соответствующий контент из хранилища и отобразит контент внутри вашего основного макета. Я думаю, что вы думали в этом направлении, просто убедитесь, что когда пользователь добавляет страницу, вы создаете уникальный URL для нее. Замените пробелы подчеркиванием, удалите специальные символы и т. Д., Чтобы создать безопасный URL-ключ, который будет использоваться для загрузки информации страницы при ее запросе.

...