Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 如何在[HttpPost]处理程序方法中检测您来自的视图?_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 如何在[HttpPost]处理程序方法中检测您来自的视图?

Asp.net mvc 4 如何在[HttpPost]处理程序方法中检测您来自的视图?,asp.net-mvc-4,Asp.net Mvc 4,考虑到这个例子: public ViewResult View1() { return View(); } public ViewResult View2() { return View(); } [HttpPost] public ActionResult Processor(SomeModel model)

考虑到这个例子:

        public ViewResult View1()
        {
            return View();
        }

        public ViewResult View2()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Processor(SomeModel model)
        {
            if (comeFromView1)
            {

            }
            //implementation
            return RedirectToAction("View3");
        }
View1和View2都有一个表单内部,可以传递给处理器。
如何在其中检测我来自哪里?

一个选项是检查Request.urlReferer。然而,用户可以很容易地欺骗推荐人

更好的方法是设置上一个操作的操作过滤器。像这样:

public class SavePreviousActionAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Session["PreviousAction"] = filterContext.RouteData["action"]
    }
}
通过将其注册为全局筛选器(在global.asax中),将其添加到所有操作中:

然后在您的操作中访问它:

if (Session["PreviousAction"].ToString() == "View1")
{
    // Came from view1
}
if (Session["PreviousAction"].ToString() == "View1")
{
    // Came from view1
}