我可以获得当前操作和控制器的名称,如:
string controllername = this.ValueProvider.GetValue("controller").RawValue.ToString();
string actionname = this.ValueProvider.GetValue("action").RawValue.ToString();
此外,我可以通过以下方式获取reffer url: string MyReferrer = Request.UrlReferrer.ToString();
但是如何在mvc2控制器中获取先前操作和控制器的名称?
答案 0 :(得分:11)
这应该有效!
// 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('/');
答案 1 :(得分:0)
答案 2 :(得分:0)
我的第一次尝试是解析请求对象中引用URL的上一个路径。
答案 3 :(得分:0)
将此值存储在tempdata中或查找引用路由(通过url)以获取实际路由对象,然后查看其控制器和操作属性。为了实现这一点,您需要能够从URL查找路由。要做到这一点,请参阅Phil Haacks代码(还有其他代码)来查找路线。列出了各种方法:
http://blogs.msdn.com/b/simonince/archive/2011/01/28/unit-testing-asp-net-mvc-routes.aspx
答案 4 :(得分:0)
考虑使用 ASP.NET MVC TempData 。
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
它将为您提供当前请求和下一个请求的持久性,因此您可以存储路由信息,例如上次调用的操作。
在处理下一个请求后,TempData中的数据将从内存中释放(与ASP.NET会话对象相反,会在会话超时或终止时释放内存)。