如何判断我的控制器操作是否是从另一个控制器操作调用的?

时间:2009-12-11 13:40:26

标签: c# asp.net asp.net-mvc

是否有任何简单的方法可以区分由于客户端Web浏览器请求而“直接”命中的ASP.NET MVC控制器操作,以及Controller.RedirectToAction调用或{{1}结果?

3 个答案:

答案 0 :(得分:1)

可以选择在Action方法中添加参数,以便传入一个值,指明它是Controller.RedirectToAction,{{1} }或客户端浏览器请求。将此与一些服务器变量检查相结合,您可能会想出一些当时大多数的东西。

RedirectToRoute

答案 1 :(得分:1)

或者,在TempData中放置一个值

public class SomeController : Controller
{
    public ActionResult SomeAction()
    {
        // ... do stuff ...
        TempData["SomeKey"] = "SomeController.SomeAction";
        return RedirectToAction("SomeOtherAction", "SomeOtherController");
    }
}

public class SomeOtherController : Controller
{
    public ActionResult SomeOtherAction()
    {
        if (TempData.ContainsKey("SomeKey"))
        {
            // ... do stuff ...
        }
        // etc...
    }
}

(来自Craig Stuntz

答案 2 :(得分:0)

如果动作从重定向到动作命中,则Request.ServerVariables [“http_referrer”]将为空,我认为。否则,它将是与“直接”访问的操作方法对应的URL。

善,