Передать URL-адрес веб-сайта в маршрут в ASP.NET MVC - PullRequest
2 голосов
/ 07 марта 2009

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

Вот код, который я пробовал, но мне не повезло за пределами localhost

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

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

Ответы [ 2 ]

0 голосов
/ 11 марта 2009

Ответ Натана является частью ответа. 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.

0 голосов
/ 09 марта 2009

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

...