【发布时间】:2013-08-23 14:22:10
【问题描述】:
鉴于以下简化的 ASP.NET MVC 场景:
- 用户导航到页面http://www.mysite.com/Home/Index(为清楚起见,明确包含“索引”)
- 在那个页面上有一个
$.ajax({..}) jQuery 帖子,它调用 Home 控制器中的一个方法,例如/Home/GetProducts - 在
GetProducts()方法中,我需要获取索引操作名称 - 请记住,在运行时我不知道用户是否正在浏览Home/Index、Home/About、Home/Contact等,如可以从任何地方调用GetProducts。
我一辈子都无法在 GetProducts() 方法的范围内获取页面操作(例如索引、关于、联系人等)。
我尝试了以下方法:
// returns "GetProducts"
string actionName1 = RouteData.GetRequiredString("action");
// returns "GetProducts"
string actionName2 = ControllerContext.Controller.ValueProvider.GetValue("action").RawValue.ToString();
// ParentActionViewContext == null
string actionName3 = ControllerContext.ParentActionViewContext.RouteData.Values["action"].ToString();
【问题讨论】:
-
注意:我可以从调用视图传入动作名称,但我想避免这样做。
-
抱歉,没有其他办法,由于 HTTP 协议的无状态特性,您将不得不这样做。
标签: asp.net-mvc routes