Как бы вы использовали ASP.NET MVC для создания страниц в CMS? - PullRequest
2 голосов
/ 28 апреля 2009

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

www.website.com.au / Home.aspx

www.website.com.au / projects.aspx

www.website.com.au / контакт-us.aspx

В предыдущей CMS, которую мы написали, мы физически создавали эти файлы на диске, когда пользователь выбирал создание новой страницы на своем сайте. Мы скопировали новый файл со страницы базового шаблона, переименовали файл и переименовали класс в коде, например,

template_page.aspx и template_page.aspx.cs превратились в

projects.aspx и projects.aspx.cs

Все это было сделано через наше приложение CMS. Пользователь не должен создавать файлы вручную.

Как этот подход будет работать с использованием MVC?

Например, www.website.com.au/home/

www.website.com.au / проекты /

www.website.com.au / контакт-нас /

Предположительно, нам нужно было бы динамически создавать контроллеры и представления на лету?

Это кажется даже более грязным, чем старый подход, но я полагаю, что это возможно.

Кто-нибудь может придумать более разумный способ сделать это?

1 Ответ

0 голосов
/ 28 апреля 2009

Вы должны иметь возможность использовать один контроллер и пару представлений (отображать, создавать, редактировать) с некоторыми работами по маршрутизации. Я сделал очень простую реализацию для личного проекта, который пошел следующим образом. Я поместил этот маршрут в верхнюю часть моего списка маршрутизации и использовал ограничение, чтобы определить, следует ли его рассматривать как статическую страницу из моих правил. Моя реализация не имела какой-либо иерархии, т.е. страницы / About-us / contact - только /contact.

route:
routes.MapRoute("StaticContent", "{title}",
  new { controller = "Page", action = "Details"},
  new { title = new InvalidTitleContstraint()});


controller:
public class PageController : Controller
{
    // Details checks if it can find a matching title in the DB
    // redirects to Create if no match 
    public ActionResult Details(string title)
    // GET
    public ActionResult Create()
    // POST
    public ActionResult Create(Page page)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...