2013-05-09 3 views
2

Я строю небольшой сайт mvc4, но я бежал, чтобы небольшая проблема:/Динамические страницы в MVC4

Сайт будет иметь площадь администратора, и в этой области администратору сайта, должен иметь возможность динамически создавать новые страницы. Предположим, что администратор создает новую страницу под названием «Мир» под другой страницей под названием «привет». Теперь, когда пользователь переходит к the.domain.com/hello/World, эта новая страница должна быть показана. Это, в основном, функциональность очень простой системы CMS.

Итак, мне нужен способ перенаправления всех вызовов, которые еще не охвачены контроллером и действием, на одно конкретное действие на одном конкретном контроллере.

Я сделал это раньше в webforms, используя urlrewriting. Я только что проверил, существует ли страница aspx на диске, и если бы она не была перенаправлена ​​на страницу, называемую как pagehandler.aspx? Pageid = {some_page_id}, но я предполагаю, что есть способ сделать это с помощью маршрутизации в mvc4 ?

ответ

0

Вы можете передавать строки в View(), так что вы должны быть в состоянии поймать это с маршрутом, как это:

routes.MapRoute(
    name: "DynamicPageView", 
    url: "Page/{pageName}", 
    defaults: new { controller = "Page", action = "DisplayPage", pageName = "Index" } 
    ); 

Это врежется метод, как это:

[HttpGet] 
public ActionResult DisplayPage(string pageName) 
{ 
    return View(viewName: pageName); 
} 

Я сделал что-то подобное себе для размещения макетов; такой метод контроллера может обрабатывать произвольное количество страниц и может быть легко расширен для обработки вложенных папок, поэтому отлично подходит для быстрого металирования фиктивных страниц, которые можно перемещать как настоящий сайт.

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

+0

Просто испытайте его, и он отлично работает. Благодаря :) – nyhjem

Смежные вопросы