如何知道哪个控制器/操作用户被重定向?

时间:2013-12-31 21:13:31

标签: asp.net-mvc

在控制器内部操作或视图中,是否有任何方法可以知道哪个控制器/操作用户刚被重定向?有Request.UrlReferrer,但它是Url,我需要知道Controller和/或动作名称。

1 个答案:

答案 0 :(得分:0)

  

有Request.UrlReferrer,但它是Url,我需要知道Controller和/或动作名称。

将Url作为字符串,您可以使用以下方法解析它并获取相应的控制器和操作名称:

var url = new Uri("http://example.com/somecontroller/someaction?foo=bar");

var request = new HttpRequest(null, url.AbsoluteUri, url.Query);
var response = new HttpResponse(StringWriter.Null);
var httpContext = new HttpContext(request, response);

var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));

string controllerName = (string)routeData.Values["controller"];
string actionName = (string)routeData.Values["action"];

显然,在我使用http://example.com/somecontroller/someaction?foo=bar的地方,您可以使用Request.UrlReferrer.AbsoluteUri

毋庸置疑,这种做法绝对不可靠。更好的解决方案是简单地将所需信息作为参数传递给调用操作中的控制器操作。