Asp.net mvc ajax链接处理不当

Asp.net mvc ajax链接处理不当,asp.net-mvc,jquery-mobile,Asp.net Mvc,Jquery Mobile,我有一个带有jquery移动应用程序的asp.NETMVC4 在一个页面(url:/StatementBatch)上,我有一个批次列表,它只是指向批次详细信息页面(url:/StetementBatch/details/4)的链接 奇怪的是,一旦点击链接并呈现详细信息页面,浏览器当前的url就变成了http://localhost:49457/StatementBatch#/StatementBatch/Details/4 我需要在应用程序中更改什么才能修复此行为 我猜这是某种与ajax加

我有一个带有jquery移动应用程序的asp.NETMVC4

在一个页面(url:/StatementBatch)上,我有一个批次列表,它只是指向批次详细信息页面(url:/StetementBatch/details/4)的链接

  • 奇怪的是,一旦点击链接并呈现详细信息页面,浏览器当前的url就变成了
    http://localhost:49457/StatementBatch#/StatementBatch/Details/4

    我需要在应用程序中更改什么才能修复此行为

    我猜这是某种与ajax加载相关的问题,但我的共享_Layout.cshtml文件包含
    $.mobile.ajaxEnabled=false,我原以为这会扼杀所有ajax加载,但我显然误解了这一点


    谢谢

    这很奇怪。如果
    $.mobile.ajaxEnabled=false,则不应生成ajax链接。请检查您的视图是否正在使用已启用此设置的其他母版页。在相应的视图目录下查找“_ViewStart.cshtml”,查看它链接到的主控形状

    要禁用特定超链接的Ajax行为,请使用
    data Ajax=“false”
    属性。如下

    <a href="/StatementBatch/Details/4" data-ajax="false">
       <h3>January 2012</h3>
       <div style="float: right; width: 30%;"><strong>Issued  : </strong>1/10/2012 12:00:00 AM</div>
       <div style="float: right; width: 30%;">Completed</div>
        <p class="ui-li-aside"><strong>1277</strong></p>
    </a>
    

    这是使用jQuery mobile时的默认行为。jQuery mobile将使您的所有链接都可以ajaxified。这意味着它将通过ajax加载链接页面的内容并更新url。如果要禁用要ajaxified的链接,可以添加
    rel
    属性,并将
    external
    作为值

    <a href="somepagep.aspx" rel="external">This will open without ajax</a>
    

    这个链接有更多关于它的信息

    我想这可能就是答案

    我会试试看我能不能让它工作

    mobileinit
    绑定移动到jquery之后,但在jquery之前,mobile完成了这项工作。这似乎是MVC4(新的)移动web应用程序模板中的一个缺陷,它只是将所有脚本捆绑在一起

    这失败了

    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
    
    <script>
        $(document).bind("mobileinit", function() {
            // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
            // when navigating from a mobile to a non-mobile page, or when clicking "back"
            // after a form post), hence disabling it.
            $.mobile.ajaxEnabled = false;
        });
    </script>
    
    
    $(document).bind(“mobileinit”,function(){
    //从Beta 2开始,jQuery Mobile的Ajax导航并非在所有情况下都有效(例如。,
    //从移动页面导航到非移动页面时,或单击“上一步”时
    //在表单发布之后),因此禁用它。
    $.mobile.ajaxEnabled=false;
    });
    
    但这是有效的

    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    
    <script src="../../Scripts/jquery-1.7.2.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
    
    <script>
        $(document).bind("mobileinit", function() {
            // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
            // when navigating from a mobile to a non-mobile page, or when clicking "back"
            // after a form post), hence disabling it.
            $.mobile.ajaxEnabled = false;
        });
    </script>
    
    <script src="../../Scripts/jquery.mobile-1.1.0.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
    <script src="../../Scripts/modernizr-2.5.3.js" type="text/javascript"></script>
    
    
    $(document).bind(“mobileinit”,function(){
    //从Beta 2开始,jQuery Mobile的Ajax导航并非在所有情况下都有效(例如。,
    //从移动页面导航到非移动页面时,或单击“上一步”时
    //在表单发布之后),因此禁用它。
    $.mobile.ajaxEnabled=false;
    });
    

    谢谢…

    不,该$.mobile.ajaxEnabled=false位来自主布局页面。只有上面已经提到的那个。。。。我已经知道如何处理数据ajax=“false”。。。我更好奇的是,为什么启用ajax的脚本似乎没有做我认为应该做的事情,“$.mobile.ajaxEnabled=false;”也没有进入它?这是一个全局级别的配置,用于禁用所有要ajaxified的链接。添加这些属性将禁用单个链接。完全理解。但是,真正的问题是,(如果我已经将它们全部禁用,我不需要在单个链接上禁用它们)。。。为什么通用的禁用行为(在新的MVC移动项目中作为默认配置)实际上没有禁用它们……我发布了另一个答案,看起来它将是正确的答案,但我正在努力测试它。。
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
    
    <script>
        $(document).bind("mobileinit", function() {
            // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
            // when navigating from a mobile to a non-mobile page, or when clicking "back"
            // after a form post), hence disabling it.
            $.mobile.ajaxEnabled = false;
        });
    </script>
    
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    
    <script src="../../Scripts/jquery-1.7.2.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
    
    <script>
        $(document).bind("mobileinit", function() {
            // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
            // when navigating from a mobile to a non-mobile page, or when clicking "back"
            // after a form post), hence disabling it.
            $.mobile.ajaxEnabled = false;
        });
    </script>
    
    <script src="../../Scripts/jquery.mobile-1.1.0.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
    <script src="../../Scripts/modernizr-2.5.3.js" type="text/javascript"></script>