Можно ли разобрать URL в его составные компоненты? - PullRequest
3 голосов
/ 13 марта 2010

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

{controller}/{action}/{id}

и URL

/user/show/10

Есть ли способ заставить систему маршрутизации возвращать словарь, содержащий ключи контроллера, действия и id с соответствующими значениями?

Ответы [ 3 ]

1 голос
/ 22 марта 2010

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

Например, в методе Application_BeginRequest файла Global.asax вы можете получить данные текущего маршрута, например, так:

var routedata = RouteTable.Routes.GetRouteData(new HttpContextWrapper(Context));

Routedata, в свою очередь, имеет RouteValueDictionary для текущего запроса, хранящийся в его свойстве Values, и содержит токены данных, хранящиеся в свойстве DataTokens.

Пол

0 голосов
/ 13 марта 2010

Вы пробовали разбить строку на символ '/'? Это даст вам порядковый массив частей пути.

var parts = url.substring(1).Split('/');
var controller = parts[0];
var action = parts[1];
var id = parts[2];
0 голосов
/ 13 марта 2010

MVC уже делает это для вас. Вы можете получить доступ к свойству RouteData внутри контроллера.

Я мог бы ответить лучше, если бы вы определили, где вы хотите перехватить данные маршрута до логики маршрутизации MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...