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
}