.net 在实现Ajax历史记录功能时替代ScriptManager

.net 在实现Ajax历史记录功能时替代ScriptManager,.net,asp.net-mvc,asp.net-ajax,.net,Asp.net Mvc,Asp.net Ajax,当您为网站创建搜索时,您希望用户体验与任何时候一样好,并且当您浏览gridview时,您希望能够按“上一步”按钮返回到以前查看的页面 在使用asp.net ajax的asp.net中,当使用脚本管理器+时,可以使用历史管理器 现在,当您使用ASP.NET MVC时,您不可能使用ScriptManager,因为它需要嵌套在服务器运行的表单中 此示例代码用于基本搜索 当你按下标准页面上的提交按钮时,你将被发布到另一个页面,但是,在这种情况下,你不会。因此没有保存历史记录,因为整个网页没有重新加载

当您为网站创建搜索时,您希望用户体验与任何时候一样好,并且当您浏览gridview时,您希望能够按“上一步”按钮返回到以前查看的页面

在使用asp.net ajax的asp.net中,当使用
脚本管理器
+时,可以使用
历史管理器

现在,当您使用ASP.NET MVC时,您不可能使用
ScriptManager
,因为它需要嵌套在服务器运行的表单中

此示例代码用于基本搜索


当你按下标准页面上的提交按钮时,你将被发布到另一个页面,但是,在这种情况下,你不会。因此没有保存历史记录,因为整个网页没有重新加载

这只是第一个问题

问题#2


由于历史记录没有保存,如上所述,文本框的搜索历史记录不会更新。文本框历史记录条目仅在页面完全回发时添加,如何使用asp.net mvc+ajax解决此问题?

您仍然可以使用HistoryManager,但jquery还有更多选项

您是否查看了该文件


我知道它,但我对它一无所知……

内置的历史记录在项目中的MS AJAX脚本中可用;您应该只能在客户端使用它。

这也解决了第二个问题吗?我不知道问题1和2有什么不同。您遇到的问题似乎是,如果您使用ajax,那么浏览器中将没有历史记录条目。这个问题可以通过ASP.NET Ajax或一些jquery插件来解决。在这两种情况下,都需要在JS中添加历史记录点。看看链接中的视频。它很好地解释了解决方案。无论如何,下面是代码,如果您想使用ASP.NET Ajax,您不能将ScriptManager与ASP.NET MVC一起使用。您是对的,但是ASP.NET Ajax脚本仍然可用。变化不大。这个链接对MVC更好,即使我有一个脚本管理器,我仍然无法从“代码隐藏”/“操作”访问它我不知道MVC中有很多例子,但是在web表单中,您会这样做:您可能遇到的问题是scriptmanager启用了历史记录;有一个Sys.Application.set_enableHistory(val)方法用于启用历史记录,但必须在初始化页面之前启用该方法。。。不知道这是否会给你带来任何问题。。。
<% using(Ajax.BeginForm("TestSearch", 
       new AjaxOptions { UpdateTargetId = "details" })) { %>


    <%= Html.TextBox("search") %>

    <input type="submit" value="search" />

<% } %>