使用javascript重定向页面将值连接到URL而不是重定向?

时间:2013-07-09 22:29:14

标签: javascript jquery url asp.net-mvc-4

我有一个下拉列表,允许用户选择要查看的数据Feed。用户第一次选择一个,我的网址如下所示:

http://localhost/DataFeeds/Viewer/1

在第二个选择中,它看起来像这样:

http://localhost/DataFeeds/Viewer/1/2

这显然不正确。 1应替换为2

以下是导致它的代码:

$('select#ID').change(function () {                
    window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val());
});

我已经尝试了

window.location.href = "@Url.Action("Viewer", "DataFeeds")/" + $(this).val();

但这也是一样的。

所有建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

以下回复是错误的。 window.location.replace()确实重定向,我的坏!

实际上,window.location.replace()与window.location = url相同,但不同之处在于replace()从浏览器历史记录中删除旧位置,因此无法使用后退按钮。


回复不好:

您正在替换不分配

window.location = window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val());


// This does not redirect it just grabs the string of the location and modifies it
window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val());

// is the same as doing
var redirectTo = window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val());

// you still need to do
window.location = redirectTo;

然而

如果它不像你说的那样工作,那么替换(“@ Url.Action(”Viewer“,”DataFeeds“)/”+ $(this).val());是有缺陷的。

答案 1 :(得分:0)

堆栈溢出还有另一个答案,可以回答这个问题。我遇到了同样的问题,发现我需要使用此处提到的?name =语法: Passing dynamic javascript values using Url.action()

代替此:

$('select#ID').change(function () {                
    window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val());
});

尝试使用类似这样的内容:

$('select#ID').change(function () {                
    window.location.replace("@Url.Action("Viewer", "DataFeeds")?id=" + $(this).val());
});

使用?name =语法时,结尾不再为我串联。