2011-08-17 149 views
2

我可以得到当前的动作和控制器的名称等: 字符串MyReferrer =请求:获得前一个动作和控制器的名称在MVC控制器

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

我也可以像得到reffer网址。 UrlReferrer.ToString();

但是,如何获取mvc2控制器中以前的动作和控制器的名称?

+1

不确定是否对您有影响,但推荐人可以伪造。考虑这是否是一个安全问题。 –

+1

这可能适合你:http://stackoverflow.com/questions/8830052/how-do-i-get-the-controller-and-action-names-from-the-referrer-uri – TestSubject

回答

0

asp.net的MVC不会因为HTTP无状态的特性提供了这一点,但你可以存储这个使用会话cookie的或

0

我第一次尝试是从参考URL解析请求中的前一路径目的。

+1

我可以得到reffer url类似于:string MyReferrer = Request.UrlReferrer.ToString(); ,但我不知道如何从网址中提取名称? – eno

+0

简单的方法是将“/”中的字符串拆分成数组,然后分别使用控制器和操作名称访问插槽。您也可以使用AbsolutePath属性(Request.UrlReferrer.AbsolutePath)来获取域之后的部分。当然,这个动作可能会也可能不会出现在你需要测试的那个点上,并假设“Index”或者你的默认动作是什么。 – coder77

9

这应该工作!

// 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

您的解决方案可行!谢谢 :) – praguan

相关问题