0
<th>@Html.DropDownList("Tables", new List<SelectListItem>
{
    new SelectListItem { Text = "A", Value = "Admin/Index"},
    new SelectListItem { Text = "B", Value = "Admin/Index"}
}, "WWW",new { @onchange="location=this.value" })</th>

此代码仅适用于第一次,后来重定向到控制器“Admin/Index”它开始复制自己。所以我有这样的地址

localhost/Admin/Admin/Index instead of localhost/Admin/Index

我也试过了,效果一样

@onchange="document.href.location=this.value
@onchange="window.href.location=this.value

如何制作正确的js,因此重定向将一直有效。

4

2 回答 2

2

您需要使用绝对路径而不是相对路径。我建议/在重定向 URL 前面添加,如下所示:

new { @onchange="location='/' + this.value" })

这种方法的唯一问题是,如果您曾经部署到您的应用程序不在根目录的服务器(例如,像http://myserver/myapp/Admin/Index),那么链接将不正确(即,它将指向http://myserver/Admin/Index)。因此,最好使用Url.Action帮助器:

@Html.DropDownList("Tables", new List<SelectListItem>
{
    new SelectListItem { Text = "A", Value = Url.Action("Index", "Admin") },
    new SelectListItem { Text = "B", Value = Url.Action("Index", "Admin") }
}, "WWW",new { @onchange="location=this.value" })

无论环境如何,这都将确保正确的 URL。

于 2013-08-19T19:32:55.970 回答
1

您可以在值中添加斜杠,因此它始终从根开始:

<th>@Html.DropDownList("Tables", new List<SelectListItem>
{
    new SelectListItem { Text = "A", Value = "/Admin/Index"},
    new SelectListItem { Text = "B", Value = "/Admin/Index"}
}, "WWW",new { @onchange="location=this.value" })</th>
于 2013-08-19T19:32:05.343 回答