用于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(); }); });