我有一个下拉列表,允许用户选择要查看的数据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();
但这也是一样的。
所有建议都表示赞赏。
答案 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 =语法时,结尾不再为我串联。