我有一个显示缩略图列表的简单页面,
我想添加一个寻呼机,我添加了两个动作链接
<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 ,
有谁知道为什么'#'字符被添加到网址?
路线copnfig:
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 }
);
}
}
答案 0 :(得分:4)
通过查看您的代码,我可以找到ui-pagination-next
这可能意味着其他一些JS框架实际上正在侦听此链接的click事件并执行某种ajax
正在使用散列"#"
字符,以便实际浏览器不会重定向到页面,同时保持历史记录
因此,如果按下浏览器后退按钮,#
之后链接的这个附加部分将被删除,任何订阅了evet的JS框架都知道如何处理它然后
更简单。
#
中的url
未发送到服务器后的任何内容。因为一些JS框架正在处理ajax部分,所以它不希望该请求应该直接转到服务器,同时在浏览器地址栏中显示正确的内容,因此在#之后添加你在链接中的所有内容并继续用AJAX
heres使用哈希进行后退和前进的深入文章
答案 1 :(得分:2)
通过查看li
ui-pagination-next
$.mobile.ajaxLinksEnabled = false;
类,我们将使用jQuery Mobile。
jQuery Mobile默认情况下为im assuming
如果您愿意,可以使用以下方法来防止这种情况:
<script type="text/javascript">
$(function(){
$.mobile.ajaxLinksEnabled = false;
});
</script>
{{1}}
答案 2 :(得分: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" })
答案 3 :(得分: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的解释