2009-03-06 5 views
2

Я работаю над проектом, который должен захватить фактический URL-адрес и использовать его в самом маршруте. Все, что я вижу, чтение и тестирование позволяет маршруту захватить элементы после URL-адреса сайта. Это то, что я пробовал, и каждый раз, когда он просто говорит, что сайт пуст (что, вероятно, связано с по умолчанию пустым). Можете ли вы бросить мне какие-то кости, позволяющие маршруту также использовать корневой URL-адрес? Целью является один веб-сайт, который будет обрабатывать URL-адрес и перенаправлять меня в разные кишки один раз внутри представления.Пропустить URL-адрес веб-сайта в маршруте в ASP.NET MVC

Вот код, который я пытался, но не везло за пределами локального хоста

  routes.MapRoute(
      "PageRouter", 
      "{site}/{*url}", 
      new { controller = "PageRouter", action = "RoutePage", site = "", url = "" } 
     ); 

Ваша помощь очень ценится. Заранее спасибо

ответ

0

Как насчет использования HttpContext.Request.RawUrl внутри действия контроллера. Возможно, я что-то пропустил. Где URL, из которого вы хотите читать? Это текущая страница или другая страница?

+0

Текущая страница находится там, где она находится .... мы в основном должны использовать исходный URL-адрес для Определите шаблоны, когда мы находимся внутри маршрута. Заполнитель {site} на маршруте, кажется, слишком далеко за RawUrl. Я попытаюсь использовать его и дать комментарий о том, как он работает – dodegaard

+0

Nathan .... это лучше сделать это в Global.asax.cs вместо этого? Можете ли вы собирать информацию из HttpContext.Request в этот момент? Нам нужно сделать это с каждым запросом, входящим в систему, чтобы позволить настраивать шаблоны – dodegaard

0

Ответ Натана является частью ответа. HttpContext.Request.RawUrl разрешает доступ к этой информации, но в файле Global.asax.cs. Это выполняется в событии Application_BeginRequest. Но трюк (и, пожалуйста, прокомментируйте, если кто-то знает более элегантный способ сделать это), но мы вводим Url, который используется в оставшемся пути маршрута, чтобы его можно было найти в методе MapRoute. Таким образом, сайт «http://subdomain.domain.net/url» будет отображаться как «http://subdomain.domain.net/subdomain.domain.net/url, поэтому его можно будет отобрать в части {site} команды MapRoute. Это не будет отображаться для пользователя, но затем позволит нам принимать решения внутри приложения на основе полученных URL-адрес. Это звучит разумно? Комментарии приветствуются, если это кажется сумасшедшим способом сделать это, чтобы поглотить корневой URL.