0

我有一个下拉菜单,允许用户选择要查看的数据馈送。用户第一次选择一个时,我的 URL 如下所示:

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();

但这做同样的事情。

所有建议表示赞赏。

4

2 回答 2

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;

然而

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

于 2013-07-09T22:36:13.427 回答
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= 语法时,结尾不再为我连接。

于 2018-12-27T00:35:59.593 回答