之後的URL部分稱爲「片段」。它不會發送到服務器,因爲它旨在提示JavaScript或瀏覽器中的操作。更多關於here。
如果您的不是實際上意圖代表一個片段,則應該由任何提交請求的人逃脫(與%23
)。
否則,您將不得不使用JavaScript函數將數據發送到服務器,但這並不是特別好,更不用說通用的解決方案。
在你的具體例子中,http://mysite/myApp/Accounts/Login?ReturnUrl=%2fmyApp%2f#/myspa1
,我不確定你在找什麼。
但是,我假設您要ReturnUrl
參數映射到/myApp/#/myspa1
?在這種情況下,重定向代理應該是URL轉義參數地址的完整,而不是事後追加任何東西。
在另一方面,如果你的ReturnUrl
被意味着僅代表/myApp/
,而片段部分,就是要傳遞到登錄頁面,你應該處理JavaScript中的需要,因爲它不會是立即發送到服務器。
編輯:
我看到這張貼在評論作爲一種解決方案,所以我會追加究竟是什麼「JavaScript作爲需要被」指的是。 This answer在這裏特別有用。
實質上,這個想法是在頁面執行回發到服務器時捕獲URL片段,並將其存儲在服務器端控件中。
例如,
<asp:HiddenField runat="server" ID="URLFragmentValue" />
<script>
$("form").submit(function() {
$('#<%= URLFragmentValue.ClientID %>').val(window.location.hash);
});
</script>
或者該腳本的非jQuery的形式:
<form onsubmit="setUrlFragment()"> ... </form>
<script>
function setUrlFragment() {
document.getElementById('<%= URLFragmentValue.ClientID %>').value = window.location.hash;
});
</script>
這是它的要點。這個答案也給出了一個如何在頁面的負載中檢索和注入散列片段的例子,但這與你的問題的範圍看起來並不相關。
當頁面碰到你的服務器時,你可以檢查URLFragmentValue.Value
,幸運的話,你可以查看和處理你的分段值。
但是,我要強調一下,你應該確保你正確地使用了片段。有時候,比如在後衛的情況下,你需要做這樣的事情。但是也有一些時候,碎片被濫用,這是一種使這種濫用的手段。確保你不在這個方面。在實施可以有條件地認爲的Band-Aid來解決這個問題之前,理解其含義並且有合理的推理。
[如何從服務器端獲取Url哈希(#)]的可能重複(http://stackoverflow.com/questions/317760/how-to-get-url-hash-from-server-side) –
什麼如下哈希不會發送到服務器。你需要一些Javascript魔術來嘗試這個。 –
謝謝羅文,你發送的URL似乎正是我所需要的。 – rcarrillopadron