Categories: ASP.NET

Получить значения route из URL

Иногда возникает потребность получить route-параметры для строки URL.

Для этого необходимо создать экземпляр RouteData из URL.

RouteInfo Class:

public class RouteInfo  
{  
    public RouteData RouteData { get; private set; }  
  
    public RouteInfo(RouteData data)  
    {  
        RouteData = data;  
    }  
  
    public RouteInfo(Uri uri, string applicationPath)  
    {  
        RouteData = RouteTable.Routes.GetRouteData(new InternalHttpContext(uri, applicationPath));  
    }  
  
    private class InternalHttpContext : HttpContextBase  
    {  
        private readonly HttpRequestBase _request;  
  
        public InternalHttpContext(Uri uri, string applicationPath)  
        {  
            _request = new InternalRequestContext(uri, applicationPath);  
        }  
  
        public override HttpRequestBase Request { get { return _request; } }  
    }  
  
    private class InternalRequestContext : HttpRequestBase  
    {  
        private readonly string _appRelativePath;  
        private readonly string _pathInfo;  
  
        public InternalRequestContext(Uri uri, string applicationPath)  
        {  
            _pathInfo = uri.Query;  
  
            if (String.IsNullOrEmpty(applicationPath) || !uri.AbsolutePath.StartsWith(applicationPath, StringComparison.OrdinalIgnoreCase))  
                _appRelativePath = uri.AbsolutePath.Substring(applicationPath.Length);  
            else  
                _appRelativePath = uri.AbsolutePath;  
        }  
  
        public override string AppRelativeCurrentExecutionFilePath { get { return String.Concat("~", _appRelativePath); } }  
        public override string PathInfo { get { return _pathInfo; } }  
    }  
}  

Пример использования:

Uri uri = new Uri("http://www.yoursite.com/somepage");  
RouteInfo routeInfo = new RouteInfo(uri, HttpContext.Current.Request.ApplicationPath);  
// Here it is...  
RouteData routeData = routeInfo.RouteData;  

Ссылка на источник

 

 

 

Руслан Раянов

Recent Posts

Форма теста внешних действий #falconstart

Вызов внешних действий - это возможность действия, выходящего за рамки возможности работы с БД через…

3 недели ago

Концепция внешних действий – telegram, email, уведомления на сайте

Вызов внешних действий - это возможность действия, выходящего за рамки возможности работы с БД через…

3 недели ago

Работа с JSON в SQL #falconstart

После выполнения действий в SQL на клиенте иногда возникает необходимость что-то обновить или сделать. Для…

4 недели ago

Форма с отправкой запроса API. Тестирование исходящих запросов #falconstart

Вы можете обратиться к внешним API через использование Внешних действий (код apirequest, использование описано в…

4 недели ago

Таблица Trace для отслеживания событий на сайте

В системной таблице as_trace хранятся данные по работе приложения. Поле code определяет тип события: DBLREQ…

4 недели ago

Работа с ошибками в системе. Генерация отчета по ошибкам #falconstart

Рассмотрим механизм анализа ошибок, как это всё работает, и как его использовать. Когда происходит ошибка…

4 недели ago