我试图制作一个简单的DropDownList(在c#中简单有趣但在某种程度上令人沮丧)允许我浏览我的MVC应用程序。
我根本没有使用JavaScript的经验,但我一天中大部分时间都在尝试各种各样的事情,并使用Chrome的JavaScript控制台尝试解决我的问题。
这就是我把它归结为。
Razor Engine查看:
<h2>Index</h2>
<p>
@Html.DropDownList("DDLRegion", new SelectList(ViewBag.Tables), new { @id = "DDLRegion" }) <br />
@Html.ActionLink("Area1", "Index", "Area1") <br />
@Html.ActionLink("Area2", "Index", "Area2") <br />
@Html.ActionLink("Area3", "Index", "Area3") <br />
</p>
@section Scripts{
<script src="/Scripts/jquery-1.10.2.js" type="text/javascript"></script>
<script type="text/javascript">
$("#DDLRegion").change(function () {
var selectedItem = $(this).val();
switch (selectedItem) {
case '0':
window.location.href = @Url.Action("Index", "Area1");
break;
case '1' :
window.location.href = @Url.Action("Index", "Area2");
break;
case '2' :
window.location.href = @Url.Action("Index", "Area3");
break;
default:
window.location.href = @Url.Action("Index", "Area1");
alert("Blarg");
break;
}
});
</script>
}
JavaScript控制台的最新错误是抱怨错过了案例&#39; 0&#39;阻止@ Url.Action方法(转换为&#39; / Area1&#39;)。
答案 0 :(得分:1)
window.location.href = @Url.Action("Index", "Area1");
这将呈现为window.location.href=sitePrefix/Area1/Index;
现在,window.location.href=sitePrefix/Area1/Index;
不是有效的javascript语句。表达的RHS应该是适当的值。由于这是一个URL,您可以将其视为字符串。
window.location.href = '@Url.Action("Index", "Area1")';
在RHS附近添加单引号将起作用。