一個「#」後我收到這樣我如何獲得url部分來自HttpRequestBase
http://localhost/controller/List#SearchGuid=755d259d-e7c9-4c5a-bf2a-69f65f63df8d
GET請求,我需要閱讀SearchGuid這是#後。 不幸的是,HttpRequestBase似乎隱藏了一切#過去。
有人知道我仍然可以從控制器操作中讀取SearchGuid嗎?
tia。
一個「#」後我收到這樣我如何獲得url部分來自HttpRequestBase
http://localhost/controller/List#SearchGuid=755d259d-e7c9-4c5a-bf2a-69f65f63df8d
GET請求,我需要閱讀SearchGuid這是#後。 不幸的是,HttpRequestBase似乎隱藏了一切#過去。
有人知道我仍然可以從控制器操作中讀取SearchGuid嗎?
tia。
您可以在客戶端使用window.location.hash在JavaScript中獲得該部分,將其設置爲一些隱藏的輸入onsubmit,以便它們也會發送到服務器。
如果你想處理URL「片段」(這就是'#'後的那些東西被調用),你需要做的是客戶端。碎片不會傳輸到服務器。
要麼重新設計協議以使用查詢字符串(用'?'替換'#'),要麼在客戶端上使用JavaScript來執行必要的處理 - 這可能包括在URI中編寫片段的服務器請求請求參數。
'#'片段只能訪問客戶端,但IE8提交URL包含#fragment部分。
您可以使用Ajax使其工作。喜歡的東西:
var fragment = location.hash; // on page load
$.get('/yoururl' + '?' + fragment.replace(/^.*#/, ''));
它將看起來像你的要求對客戶端的URL#片段,但實際上,它會請求URL片段,你可以用它在服務器端的工作?
你應該記住的一件事 - 服務器頁面將被請求兩次,所以第二個(Ajax請求 - 檢查請求頭「X-Requested-With = XMLHttpRequest」)你應該採取。
P.S. Google應用程序使用相同的解決方案,就像我從Firebug看到的一樣。
爲什麼「#」而不是「?」 ? – AnthonyWJones 2009-08-28 11:45:44
sed -es/Why/Really/ – 2009-08-28 11:46:47
我正在使用ASP.NET AJAX歷史記錄來設置額外的歷史點,即設置附加參數以在「#」後重建最後的ajax調用 – 2009-08-28 11:48:50