使用onchange重定向到另一个控制器
redirecting to another controller with onchange
<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>
此代码仅第 1 次有效,稍后重定向到控制器"管理员/索引",它开始自行复制。所以我有这样的地址
localhost/Admin/Admin/Index instead of localhost/Admin/Index
我也试过,但效果相同
@onchange="document.href.location=this.value
@onchange="window.href.location=this.value
如何制作正确的js,因此重定向将一直有效。
您需要使用绝对路径而不是相对路径。 我建议在重定向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。
您可以为值添加斜杠,使其始终从根开始:
<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>
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何从AngularJs中的另一个控制器访问控制器
- 单击angularjs中的另一个控制器时重新加载控制器
- Angularjs - 观察模态窗口从另一个控制器关闭
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 将数据从控制器传递到另一个控制器
- 如何从另一个控制器更新控制器的ng重复模型
- 从另一个控制器调用一个控制器
- 无法更改呼叫另一个控制器
- angularjs调用另一个控制器's函数
- 访问一个控制器的ng隐藏值以在全局控制器中操纵另一个控制器中的ng样式
- 无法使用typescript访问angular中另一个控制器中声明的$rootscope属性
- 角度-将数组中的信息从一个控制器传递到另一个控制器
- 调用另一个控制器Angularjs中的控制器
- 可以't从另一个控制器访问$rootScope
- 如何在 angularjs 中将值传递给一个控制器到另一个控制器
- Angular js 从一个控制器从另一个控制器继承属性
- 将一些数据从一个控制器传输到另一个控制器,或者如何将控制器更改为服务