2009-08-17 76 views
10

我有一個ActionLink,它調用了我的公共ActionResult,並且我希望它返回到它被調用的頁面,但是怎麼做?ActionResult返回到調用它的頁面

+0

你的問題不是很清楚。默認情況下,最簡單的ActionLink構造函數使用與創建鏈接時處理視圖相同的控制器。你的意思是你想讓它做一個Ajax風格的調用,這樣瀏覽器頁面不會改變? – womp 2009-08-17 16:19:35

回答

24

有幾個技巧可以用於此目的。

最簡單的是...

return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri); 

絕對URI可能不會給你你正在尋找的確切路徑,但UrlReferrer應該有你要找的imformation。重定向返回ActionResult的一個子類,所以它是一個有效的返回值。

另一個想法是將重定向位置從存儲值中取出。如果您要在重定向之前發出多個請求,例如驗證表單並在第一個響應中顯示驗證問題時,這非常有用。另一種情況是,當推薦人不是本地網站時。無論哪種情況,您的推薦人都不會是您想要的,您需要從其他地方找回正確的位置。

具體實現包括在表單上使用隱藏輸入字段,會話狀態,從路由數據中提取一個描述符值,或者甚至只是一個像HttpContext.Request.ApplicationPath一樣更常量的值。

祝你好運。

+0

我在頁面'A'上,從那裏我導航到'B'頁面。 現在我刷新頁面'B'。 在這種情況下,Request.UrlReferrer返回'B',但我期待'A'。 任何幫助? – 2016-04-14 11:21:42

0

請記住,由於Web的無狀態性質,您的ActionResult不會從您的ActionLink「調用」,它只是用戶代理請求的url。

正因爲如此,唯一真正的「內置」的方式,你可以知道用戶來自何處是通過檢查HTTP請求頭,看看引用頁是什麼:

string referrer = Request.Headers["referer"]; 

你」 d然後負責從這個URL解析出Action方法,如果你打算直接調用它的話。請注意,此推薦人可能不是您自己網站中的鏈接。