【问题标题】:Call an action from a Html.Dropdown onchange event in ASP.Net MVC 5从 ASP.Net MVC 5 中的 Html.Dropdown onchange 事件调用操作
【发布时间】:2018-11-28 20:11:36
【问题描述】:

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

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

什么是正确的语法?我尝试调用一个 javascript 函数,它可以工作。

@Html.DropDownList("UserID", null, new { @onchange = "leaveChange(this);" })

leaveChange(control) 是我的 javascript 函数。

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

【问题讨论】:

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

标签: razor model-view-controller asp.net-mvc-5 dropdown


【解决方案1】:

您不能在需要键值对的 htmlAttributes 对象内调用 C# 方法。相反,您可以执行 Url.Action 方法并在父元素的 data 属性上设置结果(url)并从您的 javascript 代码中读取

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

在更改事件中,阅读它

$(document).ready(function ()
{
    $("#UserID").change(function ()
    {
        var $this = $(this);
        var url = $this.parent().data("submit-url") + "?userId=" + $this.val();
        window.location.href = url;
    });

});

当用户在 SELECT 上进行选择时,此代码将导航到带有查询字符串键 userId/Jobs/ApplyVacation url,并将所选选项值作为其值。根据您的代码根据需要更新名称。

【讨论】:

    【解决方案2】:

    尝试在 onchange 之前删除 @

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

    【讨论】:

      【解决方案3】:

      如果你想将parameters 传递给action,你可以使用

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

      【讨论】:

        【解决方案4】:

        这就是我所做的

         @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>
        

        控制器:

        public string TellMeDate(string parameter)
            {
        
        
                    return DateTime.Today.ToString() +"-->>>"+ parameter + "!!!!";
        
        
            }
        

        【讨论】:

          【解决方案5】:

          这段代码对我有用:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-08
            • 2014-12-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多