如何获取页面的ASP.NET MVC操作(即来自URL的操作)而不是当前操作?

时间:2013-08-23 14:22:10

标签: asp.net-mvc routes

鉴于以下简化的ASP.NET MVC场景:

  1. 用户导航到页面http://www.mysite.com/Home/Index(为清晰起见,明确包括“索引”)
  2. 在该页面上是一个$.ajax({..})jQuery帖子,它调用Home控制器中的方法,例如/Home/GetProducts
  3. GetProducts()方法中,我需要获取索引操作名称 - 请记住,在运行时我不知道用户是否正在浏览Home/IndexHome/About,{{ 1}}等,因为Home/Contact可以从任何地方调用。
  4. 我无法在我的生活中获得GetProducts方法范围内的页面操作(例如索引,关于,联系等)。

    我尝试了以下内容:

    GetProducts()

1 个答案:

答案 0 :(得分:1)

你无法得到它。 HTTP是一种无状态协议,它不会跟踪先前的请求。因此,只需将其作为参数传递给AJAX请求:

$.ajax({
    url: '@Url.Action("GetProducts", "Home")',
    data: { currentAction: '@ViewContext.RouteData.GetRequiredString("action")' },
    success: function(result) {
        // do something with the results
    }
});

并且您的GetProducts控制器操作会将其作为参数:

public ActionResult GetProducts(string currentAction)
{
    ...
}