Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用ASP.NETMVC、Ajax和局部视图,如何更新url?_Jquery_Html_Asp.net Mvc - Fatal编程技术网

Jquery 使用ASP.NETMVC、Ajax和局部视图,如何更新url?

Jquery 使用ASP.NETMVC、Ajax和局部视图,如何更新url?,jquery,html,asp.net-mvc,Jquery,Html,Asp.net Mvc,好的,我试着在页面的左侧有一个静态菜单,这样当点击链接时它就不会改变 我是如何做到这一点的,我在我的a标签上调用了一点javascript,它调用了一些ajax。我的控制器返回一个局部视图,然后将其加载到我的content div中 这一切都很好。我遇到的问题是,我的URL没有更改,我希望能够使用“后退”按钮返回到上一页 我曾尝试使用location.hash,但这似乎并不像我希望的那样有效。想法 下面是我的代码 HTML 控制器 public ActionResult PageName()

好的,我试着在页面的左侧有一个静态菜单,这样当点击链接时它就不会改变

我是如何做到这一点的,我在我的a标签上调用了一点javascript,它调用了一些ajax。我的控制器返回一个局部视图,然后将其加载到我的content div中

这一切都很好。我遇到的问题是,我的URL没有更改,我希望能够使用“后退”按钮返回到上一页

我曾尝试使用location.hash,但这似乎并不像我希望的那样有效。想法

下面是我的代码

HTML

控制器

 public ActionResult PageName()
    {
        return PartialView("MyPage");
    }
谢谢! 大卫

考虑退房。实现w/MVC非常容易,并且可以完成您想要完成的任务

谈论另一种选择,PAjax


正如您在评论中所述,这两种方法都利用了pushState,但并非所有浏览器都完全支持。但是pjax在不支持pushstate的情况下,通过进行完整页面的更新,确实会优雅地降低性能。

问这个问题的另一种方式是如何获得一个功能类似gmail的副菜单……我曾考虑过使用pushstate,但这方面的浏览器支持似乎仍然很弱。据我所知,pushstate是使用Ajax完成URL更新的唯一方法。但你是对的,一些旧的浏览器(也许还有IE)并不完全支持这一点。幸运的是,pjax会优雅地降级,但只有在您可以接受的情况下。令人惊叹的。非常感谢!仅供参考…另一个有用的链接:
function ChangePage(path, hash) {
        $.post(path, function (data) {
            $('#content').html(data);
            window.location.hash = '#' + hash;
        });
    }
 public ActionResult PageName()
    {
        return PartialView("MyPage");
    }