ASPNET MVC: способ выяснить маршрут реферера (sic)? - PullRequest
7 голосов
/ 19 января 2009

У меня есть некоторые действия POST на моем контроллере, которые вызваны парой действий GET. Когда проверка не проходит, я хочу отобразить вид действия, из которого исходит POST. Например:

~ / POSTs учетных записей в ~ / accounts / disable - отображать представление «index» при ошибке проверки ~ / account / POST для профиля в ~ / account / disable - отобразить представление "профиля" при ошибке проверки

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

Похоже, что свойство ControllerContext.RouteData содержит информацию только о текущем запросе, а не о запросе реферирования (sic) ...?

Я в бета-версии ASP.NET MVC.

1 Ответ

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

MVC Contrib включает метод расширения для String для получения маршрута (в частности, здесь ). Теоретически это позволит вам сделать

RouteData referrer = Request.UrlReferrer.PathAndQuery.Route();

или, конечно, оберните это в методе расширения HttpRequest, чтобы вы могли просто сделать

RouteData referrer = Request.ReferrerRoute();

Однако он предназначен для модульного тестирования и использует Rhino Mocks для создания HttpContextBase, который требуется GetRouteData (). Хорошей новостью является то, что, похоже, сходит с рук на насмешки, поэтому вы можете избежать Rhino Mocks, если создадите свой собственный класс FakeHttpContext, производный от HttpContextBase.

...