MVC Ajax.BeginForm - 成功获取请求后在浏览器中更新URL

Evg*_*kiy 5 ajax jquery asp.net-mvc-4

我有一个Ajax表单,如下所示:

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

问题是:如何用我使用AJAX发送的params更新浏览器URL?

Ser*_*iko 5

如果你想使用Ajax.BeginForm(),你可以使用“OnSuccess”属性和benalman 的插件,因为没有 javascript 你将无法更改 url

url 更改演示(需要 jQuery 1.9)

@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
       }
Run Code Online (Sandbox Code Playgroud)

和 JavaScript:

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

注意:但由于$.browser在 benalman 的插件中使用(已从 jQuery 1.9 中删除),我建议使用window.location.hash = "#my_url";orwindow.location.replace("#my_url");代替location.hash = "#my_url";