MVC网站 - 在主页标题部分,我有一个下拉列表中有两个选项。每个选项都应路由到不同的Controller / ActionMethod。因为我需要将它放在每个页面的标题部分中,所以我将它放在site.master文件中。
下拉代码:
<%=Html.DropDownList("OneOrTwo",
new List<SelectListItem>
{
new SelectListItem{ Text="One", Value = "One" },
new SelectListItem{ Text="Two", Value = "Two" }
}
, new { @style = "background-color:#f00; border: none;", onchange =
"fnNum()" }
)%>
在javascript文件中,我根据下拉选项路由到不同的控制器/操作方法。
function fnNum()
{
var e = document.getElementById("OneOrTwo");
var SelValue = e.options[e.selectedIndex].value;
if (SelValue == "One")
window.location.href = "Controller1/Index";
else
window.location.href = "Controller2/Index";
}
这种方法存在两个问题:
更改选择时 - 新选择的选项不会保留。即使网页显示新的控制器/操作方法视图,下拉菜单也会切换回原始选项...
在后续选择相同的选项时 - 将我带到localhost:/ Controller1 / Index / Controller1 / Index / etc .....必须有一个干净的方法来执行此操作。
< / LI> 醇>所以我想要两件事:
感谢您的帮助。
答案 0 :(得分:2)
要解决问题1,您必须设置Selected
的{{1}}属性。所以我会改变你的代码来生成这样的下拉列表:
SelectListItems
第二个问题更容易解决。它来自于您将窗口位置设置为 relative ,而不是绝对 URL。只需将其更改为:
@Html.DropDownList("FooOrBar", new List<SelectListItem> {
new SelectListItem{ Text="One", Value = "Two", Selected = Request.Path == "/Controller1/Index" },
new SelectListItem{ Text="One", Value = "Two", Selected = Request.Path == "/Controller1/Index" }
}, new { @style = "background-color:#f00; border: none;", onchange = "fnNum()" } )