我有一个非常简单的问题,但似乎无法弄明白。
以下不起作用,因为MVC构建URL的方式(它包括所有路由信息)。我希望pathname只返回虚拟目录路径。
当用户从下拉列表中选择ID时,我所做的就是重定向到不同的路线。
$(document).ready(function() {
$('#TransactionIds').change(function() {
document.location = window.location.pathname + "/CeuTransaction/Index/" + $('#TransactionIds').val();
});
});
答案 0 :(得分:10)
使用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" ) %>' );
});
答案 1 :(得分:6)
这是我最终做的事情。
在页面中添加了隐藏文字字段:
<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();
});
});