Razor 从ASP.NETMVC5中的Html.DropdownOnChange事件调用操作

Razor 从ASP.NETMVC5中的Html.DropdownOnChange事件调用操作,razor,model-view-controller,asp.net-mvc-5,dropdown,Razor,Model View Controller,Asp.net Mvc 5,Dropdown,当下拉选择项更改时,我尝试调用控制器中的操作。这是我正在使用的代码,但它不起作用 @Html.DropDownList("UserID", null, new { @onchange = "location.href='@Url.Action("Action", "Controller")'" }) 正确的语法是什么?我尝试调用一个javascript函数,它成功了 @Html.DropDownList("UserID", null, new { @onchange = "leaveChan

当下拉选择项更改时,我尝试调用控制器中的操作。这是我正在使用的代码,但它不起作用

 @Html.DropDownList("UserID", null, new { @onchange = "location.href='@Url.Action("Action", "Controller")'" })
正确的语法是什么?我尝试调用一个javascript函数,它成功了

@Html.DropDownList("UserID", null, new { @onchange = "leaveChange(this);" })
leaveChangecontrol是我的javascript函数


但是,我无法调用控制器的操作。另外,如何将所选项目的值传递给操作?

您不能在htmlAttributes对象中调用C方法,因为它需要一个键值对。相反,您可以执行Url.Action方法并将结果设置为父元素的数据属性上的Url,然后在javascript代码中读取该Url

<div data-submit-url="@Url.Action("ApplyVacation","Jobs")">
    @Html.DropDownList("UserID",)
</div>

当用户在SELECT上进行选择时,此代码将导航到/Jobs/ApplyVacation url,其中querystring key userId和所选选项值作为该url的值。根据您的代码根据需要更新名称。

您不能在htmlAttributes对象中调用C方法,因为它需要一个键值对。相反,您可以执行Url.Action方法并将结果设置为父元素的数据属性上的Url,然后在javascript代码中读取该Url

<div data-submit-url="@Url.Action("ApplyVacation","Jobs")">
    @Html.DropDownList("UserID",)
</div>
当用户在SELECT上进行选择时,此代码将导航到/Jobs/ApplyVacation url,其中querystring key userId和所选选项值作为该url的值。根据您的代码根据需要更新名称。

以下是我所做的

 @Html.DropDownList("UserID", null,new {@id = "leve" })
Jquery代码如下:

<script type="text/javascript">

                $('#leve').change(function () {
                    var url = "/UserRoles/TellMeDate";
                    var name = $('#leve').val();
                    $.get(url, { parameter: name }, function (data) {
                        alert(data);
                    });


                })

            });         




        </script>
这就是我所做的

 @Html.DropDownList("UserID", null,new {@id = "leve" })
Jquery代码如下:

<script type="text/javascript">

                $('#leve').change(function () {
                    var url = "/UserRoles/TellMeDate";
                    var name = $('#leve').val();
                    $.get(url, { parameter: name }, function (data) {
                        alert(data);
                    });


                })

            });         




        </script>

尝试在onchange之前删除@

 @Html.DropDownList("UserID", null, new { onchange = "location.href='@Url.Action("Action", "Controller")'" })

尝试在onchange之前删除@

 @Html.DropDownList("UserID", null, new { onchange = "location.href='@Url.Action("Action", "Controller")'" })

这个代码对我有用:

onchange = "location.href='" + @Url.Action("AdmissionRequirement", "Profile") + "'"

这个代码对我有用:

onchange = "location.href='" + @Url.Action("AdmissionRequirement", "Profile") + "'"
如果要将参数传递给操作,可以使用

@Html.DropDownList("UserID", null, new { onchange = "location.href='@Url.Action("Action", "Controller", 

    new {name = "Test param", category = "Test1"})'" })
如果要将参数传递给操作,可以使用

@Html.DropDownList("UserID", null, new { onchange = "location.href='@Url.Action("Action", "Controller", 

    new {name = "Test param", category = "Test1"})'" })

您是否尝试在更改事件上导航到该操作?为什么不使用链接而不是选择元素更改?@Shyju这就是我最后做的。jquery的更改事件重定向到该操作。但是我想知道是否有更直接的方法。但是对于导航到另一个页面,链接更合适吗?为什么要在其中引入SELECT元素?是否尝试在更改事件上导航到该操作?为什么不使用链接而不是选择元素更改?@Shyju这就是我最后做的。jquery的更改事件重定向到该操作。但是我想知道是否有更直接的方法。但是对于导航到另一个页面,链接更合适吗?为什么要在其中引入SELECT元素?