2013-04-28 29 views
1

考慮下面的例子:如何在[HttpPost]處理程序方法中檢測您來自哪個視圖?

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

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

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

      } 
      //implementation 
      return RedirectToAction("View3"); 
     } 

兩個視圖1和視圖2具有張貼到處理器形式的內部。 如何檢測其內部我來自哪裏?

回答

2

一個選項是檢查Request.UrlReferrer。但是,用戶可以輕鬆欺騙引薦者。

更好的方法是設置上一個操作的操作過濾器。就像這樣:

GlobalFilters.Filters.Add(new SavePreviousActionAttribute()); 

,然後訪問它在你的行動:

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

public class SavePreviousActionAttribute 
{ 
    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
     filterContext.HttpContext.Session["PreviousAction"] = filterContext.RouteData["action"] 
    } 
} 

通過註冊它作爲一個全球性的過濾器(在Global.asax中)添加這一切行動

相關問題