2014-01-28 100 views
0

當瀏覽器的後退按鈕被單擊時,如何重定向到控制器操作。 我可以通過單擊我自己的按鈕或頁面上的鏈接來實現此功能,但通過單擊瀏覽器的後退或刷新按鈕獲得相同結果是個問題。重定向到瀏覽器上的特定操作後退按鈕單擊MVC

我有一個名爲「Notifications」的控制器
控制器中的一個名爲「Unlock」的操作將「id」作爲參數。

我的鏈接工作完全正常:

@Html.ActionLink("Back to List", "Unlock", new { id = Model.NotificationId }) 

我使用JavaScript嘗試:

<script> 
     window.onbeforeunload = function() { 
      window.location.replace("/Notifications/Unlock/" + "@Model.NotificationId"); 
      } 
    </script> 

即使window.location.href似乎並沒有工作。請幫忙。謝謝:)

+0

只想讓你知道,這是一個非常不好的做法,因爲它既不是標準的行爲,也不是它的東西,用戶的期望。你應該有非常強烈的論據。我不知道是否可以更改後退按鈕的歷史記錄或行爲。 – timmkrause

+0

我很清楚那個謝謝。只是當用戶點擊我的鏈接時需要採取一些行動。但如果他們不這樣做,請點擊後退按鈕...大問題 – Dumisani

回答

2

這爲我工作:

<script> 
    window.onunload = function() { 
     $.ajax({ 
      url: '/Notifications/Unlock/' + '@Model.NotificationId', 
      type: 'POST', 
      datatype: "json", 
      contentType: "application/json; charset=utf-8" 
     }); 
    }; 
</script> 
+0

如果將操作方法​​重定向到「HttpPost」類型,此項工作是否可行? –

+0

礦與'HttpPost'類型合作,因此我在我的ajax調用中提到'POST' – Dumisani

0

你不能這樣做。當用戶按下瀏覽器的後退按鈕時,上一頁的緩存版本將被渲染,並且服務器將永遠不會被調用。

+0

謝謝。有沒有比我想要的更好的方法?因爲禁用後退按鈕是確定的否。儘管我是一名開發人員,但我一直是其他可怕網站的用戶,他們實施了這個...笑話 – Dumisani

+1

我認爲我們需要更多的背景來解決您正在嘗試解決的實際問題。那麼可以考慮其他方法。也許AJAX調用一個動作或類似的東西。 – timmkrause

+0

非常感謝@timmkrause。這給了我一個主意。 – Dumisani

相關問題