MVC маршрутизация, если URL страницы хранится в базе данных - PullRequest
2 голосов
/ 22 июня 2011

У меня есть своего рода приложение CMS, которое позволяет создавать контентные страницы и указывать для них URL-адреса. Я хотел бы позволить пользователям вводить любой URL, например:

/Documents/Forms/MyForm
/Documents/Manuals/MyManual
/Events/BBQThisWeek

Затем мне нужно создать маршрут, который будет проверять, существует ли страница содержимого с заданным URL-адресом в БД, и если да, будет маршрутизировать к контроллеру, который обрабатывает страницы содержимого. Если нет, то будет продолжен маршрут по умолчанию.

Как мне подойти к этому? Спасибо V.

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Создайте класс, расширяющий Route

public class CustomRoute : Route
{

    public override RouteData GetRouteData(System.Web.HttpContextBase httpContext)
    {
        var routeData = base.GetRouteData(httpContext);
        if(routeData != null)
        { do some stuff on routeData... }
        return routeData;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        // Do the opposite of the first function
    }
}

edit: Самый простой способ - расширить Route и использовать base.GetRouteData, а затем просто изменить токен данных 'controller' и 'action' на то, что выхочу

0 голосов
/ 22 июня 2011

Возможно, вам придется настроить пользовательский обработчик. Взгляните на третий вариант на здесь

Вы можете прочитать из базы данных на action invoker.

...