MVC2: необходимо направить URL-адреса, содержащие символ # - PullRequest
1 голос
/ 11 января 2011

Я ищу способ правильно маршрутизировать URL-адреса, содержащие символ «#». Для таких URL я в основном хочу игнорировать #.

Например, я хочу, чтобы Stores / Index / # / {storeName} направлялись к действию Index контроллера Store, передавая один параметр (storeName).

Я попытался сопоставить литерал '#' в строке, но это не работает. (Действие вызывается, но параметр storeName не передается)

routes.MapRoute("RemoveHash", "Store/Index/#/{storeName}",
            new {controller = "Store", action = "Index", storeName = UrlParameter.Optional});

Я также попытался использовать 2 параметра в действии (первый - #), думая, что я мог бы просто проигнорировать #, если он был пройден (хак, я знаю) ... но что-то не так с маршрутизацией в этом регистр и ни один параметр не передается действию.

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

Есть предложения?

1 Ответ

3 голосов
/ 11 января 2011

То, что вы пытаетесь сделать, невозможно.Все, что следует за знаком # (хеш) в URL, полностью игнорируется, когда браузер отправляет запрос на сервер, поэтому ваше приложение ASP.NET MVC никогда не сможет получить это значение.Только javascript на стороне клиента мог прочитать это значение (используя window.location.hash) и мог передать его на сервер, используя запрос AJAX и обычный URL-адрес (например: Store/Index/{storeName}).

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