用于window.location的.NET MVC jQuery相对路径
我有一个真正简单的问题,但似乎无法弄明白。
由于MVC构建URL的方式(包括所有路由信息),以下内容不起作用。 我希望pathname只返回虚拟目录路径。
当用户从下拉列表中选择ID时,我正在做的是重定向到不同的路由。
$(document).ready(function() { $('#TransactionIds').change(function() { document.location = window.location.pathname + "/CeuTransaction/Index/" + $('#TransactionIds').val(); }); });
使用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" ) %>' ); });
这就是我最终做的事情。
在页面中添加了隐藏文本字段:
" id="pathname" />
在js脚本库中使用以下内容:
// The following line enables jQuery intellisense /// $(document).ready(function() { $('#TransactionIds').change(function() { document.location = $('#pathname').val() + $('#TransactionIds').val(); }); });