我使用下拉列表并传递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'"
有人请建议我传递多个参数的正确方法。
答案 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");
});