为什么我的DropDownList更改事件无法正常工作?

时间:2015-04-28 04:28:57

标签: javascript jquery asp.net asp.net-mvc razor

我试图制作一个简单的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;)。

1 个答案:

答案 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附近添加单引号将起作用。