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

Что такое Customer Development (кастдев)? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

12 часов ago

Что такое Целевая аудитория? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

2 дня ago

Что такое Концепция сайта? Что такое Бриф на разработку сайта? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

3 дня ago

Каким должен быть личный кабинет информационной системы?

Вероятно, у вас есть сайт и вы подумываете, что было бы неплохо внедрить в него…

4 дня ago

Что такое Итерация, этап, спринт? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

7 дней ago

Что такое Рейт эстимейт почасовая ставка? #понятия_веб_разработки #вебликбез

https://falconspace.ru/blog/bazovye-voprosy-i-ponyatiya-v-sfere-sozdaniya-veb-proektov - Основы веб-разработки. Базовые понятия для владельца сайта

1 неделя ago