下拉列表onChange传递URL MVC

时间:2017-05-23 12:45:34

标签: asp.net-mvc url onchange

我使用下拉列表并传递url onchange事件,如下所示

@onchange = "windows.location.href='Url.Action('Index', 'StudentManagement')?Id='this.options[this.selectedIndex].value+'&isDropdownValue=true'"

但是在加载View时我收到语法错误,因为url正在转换为

onchange="windows.location.href='Url.Action('Index', 'StudentManagement')?Id='this.options[this.selectedIndex].value+'&isDropdownValue=true'"

有人请建议我传递多个参数的正确方法。

3 个答案:

答案 0 :(得分:0)

尝试如下:

 var action = Url.Action("Index", "StudentManagement", new { Id = this.options[this.selectedIndex].value,isDropdownValue=true });
 @Html.DropDownListFor(model => model.YourModelName, Model.list, new{@class = "form-control",@onchange = "window.location.href='"+action+"'"});

答案 1 :(得分:0)

您正在获取上述查询字符串,因为您提到的单引号已转换为其等效的Ascii代码以及其他值。

避免这种情况:

在Mvc的剃刀视图中,您应该始终使用@字符作为服务器端代码,在您的情况下,Url是服务器端代码。

所以您的查询字符串将如下所示:

@onchange = "windows.location.href='@Url.Action('Index', 'StudentManagement')?Id='this.options[this.selectedIndex].value'&isDropdownValue=true'"

并且在id值之后你不需要+符号,它会自动连接。

希望代码一定会解决您的问题,请让我知道您的想法或反馈

由于 卡西克

答案 2 :(得分:0)

我尝试了如下代码并且工作正常

@Html.DropDownListFor(model => model.StudentId, Model.LstStudent, "-- Select --", new { id = "ddlStudent", @class = "form-control" })

$("#ddlStudent").change(function () {
    var selectedStudentVal = $("#ddlStudentoption:selected").val();
    window.location.replace("/StudentManagement/Index?Id=" + selectedStudentVal + "&isddlValue=true");
});