6

我有一个显示缩略图列表的简单页面,

我想添加一个寻呼机,我添加了两个操作链接

  <li class="ui-pagination-next">@Html.ActionLink("Next", "Paginate", "Home", new { nbSkip = ViewBag.nextSkip }, null)</li>

当我点击链接时,我被重定向到

http://localhost:41626/#/Home/Paginate?nbSkip=60

代替

http://localhost:41626/Home/Paginate?nbSkip=60 , 

有谁知道为什么将“#”字符添加到 URL 中?

路线配置:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
4

4 回答 4

4

通过查看您的代码,我发现ui-pagination-next
这可能意味着其他一些 JS 框架实际上正在侦听此链接的单击事件并正在使用某种 ajax
哈希"#"字符,因此实际上浏览器不会重定向到页面和同时保留历史记录
,因此如果您按下浏览器的后退按钮,则此链接的附加部分将#被删除,并且订阅 evet 的任何 JS 框架都知道如何以

更简单的方式处理它。 在 a
之后的任何东西#url不发送到服务器。因为一些 JS 框架正在处理 ajax 部分,它不希望该请求应该直接转到服务器,同时在浏览器地址栏中显示正确的外观,因此在 # 之后添加您在链接中的任何内容并继续使用 AJAX

继承了一篇深入的文章,使用哈希进行后退和前进

于 2012-09-07T09:26:46.013 回答
2

通过查看您li的 im 类,ui-pagination-next 假设这里正在使用 jQuery Mobile。

默认情况下,jQuery Mobile使您的链接启用 AJAX


如果您愿意,可以使用以下方法防止这种情况:

$.mobile.ajaxLinksEnabled = false; 

<script type="text/javascript">
   $(function(){
       $.mobile.ajaxLinksEnabled = false; 
   });
</script>
于 2012-09-07T09:20:54.690 回答
0

如果我是你,我会使用 Ajax Raw ActionLink:

@Ajax.RawActionLink("NameofLink", "Action", "Controller", new { oid = 0, type = "oid and type are 2 parameters you want to send to action " }, new { id = "btnNewB", @class = "anyclass" })
于 2012-09-07T09:22:28.197 回答
0

谢谢大家的回复,

很好看@curt,事实上我正在使用jQuery mobile,导致问题的原因是mobile.changePage

现在我使用简单的按钮来导航投掷页面,但是

$.mobile.ajaxLinksEnabled = false; 

不能解决我的 ajax 链接问题。所以我已经这样做了,它现在正在工作

 @Html.ActionLink("Previous", "Index", new { nbSkip = ViewBag.previousSkip }, new { data_role = "button", data_icon = "arrow-l", rel = "external", data_ajax = false })

感谢@Parv Sharma 的解释

于 2012-09-07T11:26:51.173 回答