【问题标题】:.NET MVC jQuery relative path for window.locationwindow.location 的 .NET MVC jQuery 相对路径
【发布时间】:2009-06-15 14:35:23
【问题描述】:

我有一个非常简单的问题,但似乎无法弄清楚。

由于 MVC 构建 URL 的方式,以下内容不起作用(它包括所有路由信息)。我希望 pathname 仅返回虚拟目录路径。

当用户从下拉列表中选择一个 ID 时,我所做的只是重定向到不同的路由。

$(document).ready(function() {
    $('#TransactionIds').change(function() {
        document.location = window.location.pathname + "/CeuTransaction/Index/" + $('#TransactionIds').val();
    });
});

【问题讨论】:

    标签: jquery asp.net-mvc


    【解决方案1】:

    使用 UrlHelper 构建路径。它将考虑应用程序相对于 Web 服务器根目录的位置。

    $(document).ready(function() {
       $('#TransactionIds').change(function() {
           document.location = '<%= Url.Action( "Index", "CeuTransaction" ) %>'
                                + '/'
                                + $('#TransactionIds').val();
       });
    });
    

    替代方案:分为两部分,以便函数可以包含在 javascript 库中(仍然需要从视图或主控器调用)。通过一些工作,您也可以使其成为一个 jQuery 扩展。

    function redirectOnChange( selector, action )
    {
       $(selector).change( function() {
           document.location = action + '/' + $(selector).val();
       });
    }
    

    在视图中:

    $(function() {
        redirectOnChange('#TransactionIds',
                         '<%= Url.Action( "Index", "CeuTransaction" ) %>' );
    });
    

    【讨论】:

    • 道歉。我忘了提到这个脚本包含在脚本库中,而不是页面本身。
    • 谢谢。从风格的角度来看,我总是尝试从我的网页中完全删除嵌入的 JS。不过我喜欢你的解决方案,我会看看我是否不能用它来想出一些我觉得更舒服的东西。我也是一个正在学习 jQuery 的prototype.js 用户——所以不知道所有可用的可能性。
    • +1 很好,刚刚在我正在开发的网站上使用了这个逻辑。感谢您的帖子。
    【解决方案2】:

    这就是我最终做的事情。

    向页面添加了隐藏文本字段:

    <input type="hidden" value="<%= Url.Content("~/CeuTransaction/Index/") %>" id="pathname" />
    

    在js脚本库中使用了以下内容:

    // The following line enables jQuery intellisense
    /// <reference path="jquery-1.3.2-vsdoc.js" />
    
    $(document).ready(function() {
        $('#TransactionIds').change(function() {
            document.location = $('#pathname').val() + $('#TransactionIds').val();
        });
    });
    

    【讨论】:

    • 对于使用 razor 引擎的 MVC3 用户,该行是 &lt;input type="hidden" value="@Url.Content("~/Search/Index/")" id="pathname" /&gt;
    猜你喜欢
    • 2015-02-09
    • 1970-01-01
    • 2013-07-14
    • 2014-02-06
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多