Получение названий предыдущего действия и контроллера в контроллере MVC - PullRequest
4 голосов
/ 17 августа 2011

Я могу получить имя текущего действия и контроллер, например:

string controllername = this.ValueProvider.GetValue("controller").RawValue.ToString();
string actionname = this.ValueProvider.GetValue("action").RawValue.ToString();

Также я могу получить URL-адрес реффера с помощью чего-то вроде: string MyReferrer = Request.UrlReferrer.ToString ();

Но как я могу получить имена предыдущих действий и контроллера в контроллере mvc2?

Ответы [ 5 ]

11 голосов
/ 25 марта 2015

Это должно работать!

// Home is default controller
var controller = (Request.UrlReferrer.Segments.Skip(1).Take(1).SingleOrDefault() ?? "Home").Trim('/'); 

// Index is default action 
var action = (Request.UrlReferrer.Segments.Skip(2).Take(1).SingleOrDefault() ?? "Index").Trim('/'); 
0 голосов
/ 24 ноября 2011

Рассмотрите возможность использования ASP.NET MVC TempData .

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

Это даст вам постоянство в текущем и следующем запросах, так что вы сможете хранить там информацию о маршрутизации, например, последнее вызванное действие.

Данные в TempData будут освобождены из памяти после обработки следующего запроса (в отличие от объекта сеанса ASP.NET, который освободит память по истечении времени ожидания или завершения сеанса).

0 голосов
/ 17 августа 2011

Моей первой попыткой было бы проанализировать предыдущий путь по URL-адресу ссылки в объекте запроса.

0 голосов
/ 17 августа 2011

Сохраните это значение в tempdata ИЛИ ищите ссылающийся маршрут (через URL), чтобы получить реальный объект маршрута, затем посмотрите на его контроллер и свойство action.Чтобы получить это, вам нужно найти маршрут по URL.Чтобы сделать это, обратитесь к коду Фила Хаака (есть и другие), чтобы найти маршрут.Существуют различные методы, перечисленные в:

http://blogs.msdn.com/b/simonince/archive/2011/01/28/unit-testing-asp-net-mvc-routes.aspx

0 голосов
/ 17 августа 2011

asp.net mvc не обеспечивает этого из-за природы http без сохранения состояния, но вы можете сохранить это, используя сеанс или cookie

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