2014-07-19 8 views
5

Mam formularz Ajax, coś takiego:MVC Ajax.BeginForm - Aktualizacja URL w przeglądarce po pomyślnym żądanie GET

@using (Ajax.BeginForm("AjaxSerchResult", "Search", new { area = string.Empty }, new AjaxOptions() { HttpMethod = "Get", UpdateTargetId = "Results", LoadingElementId = "Loading" }, new { id = "Search" }) 
{ 
//Fields go here 
} 

Pytanie brzmi: jak zaktualizować przeglądarkę URL z params wyślę wykorzystaniem AJAX?

+0

Proszę spojrzeć na [to] (http://stackoverflow.com/questions/ 136458/change-the-url-in-the-browser-without-loading-the-new-page-using-javascript) –

+0

ale jak sprawić, by działał z kontrolą mvc ajax? Nie jestem ekspertem od javascript ... –

+0

spójrz na moją odpowiedź poniżej, w każdym razie musisz używać javascript, ponieważ tylko przy użyciu javascript możesz zmienić adres URL. –

Odpowiedz

4

jeśli chcesz używać Ajax.BeginForm(), należy użyć "onSuccess" atrybut i benalman's plugin, jak bez javascript nie będzie mógł zmienić adresu URL

demo of url changing (jQuery 1.9 wymagane)

@using(Ajax.BeginForm(
     "AjaxSerchResult", 
     "Search", 
     new { area = string.Empty }, 
     new AjaxOptions(){ 
         HttpMethod = "Get", 
         UpdateTargetId = "Results", 
         LoadingElementId = "Loading", 
         OnSuccess = "changeUrl(data)" 
         }, 
     new { id = "Search" })) 
     { 
      //Fields go here 
     } 

i JavaScript :

<script> 
    function changeUrl(data) { 
     //if you are using benalman's plugin with jQuery 1.9 
     location.hash = "#my_hash"; 
    } 
    </script> 

Uwaga: ale ze względu na USI ng $.browser (który został już usunięty z jQuery 1.9) w wtyczki benalman jest, polecam użyć window.location.hash = "#my_url"; lub window.location.replace("#my_url"); zamiast location.hash = "#my_url";