html.dropdownlist 的 onchange 事件

Posted

技术标签:

【中文标题】html.dropdownlist 的 onchange 事件【英文标题】:onchange event for html.dropdownlist 【发布时间】:2014-09-23 06:09:59 【问题描述】:

我正在尝试触发下拉列表的 onchange 事件的操作方法,如何在不使用 jquery onchange 的情况下执行此操作。

@html.DropDownList("Sortby", 
                   new SelectListItem[] 
                    
                       new SelectListItem()  Text = "Newest to Oldest", Value = "0" , 
                       new SelectListItem()  Text = "Oldest to Newest", Value = "1" )

谢谢

【问题讨论】:

您想在更改时调用控制器?? 我想调用 /Controller/Actionmethod?value=valueofthedropdownlist 之类的东西,这样行吗?? 助手中的 Sortby 是什么?是标签还是别的什么? 【参考方案1】:

如果你不想要 jquery,那么你可以用 javascript 来做:-

@Html.DropDownList("Sortby", new SelectListItem[] 
 
     new SelectListItem()  Text = "Newest to Oldest", Value = "0" , 
     new SelectListItem()  Text = "Oldest to Newest", Value = "1" ,
     new  @onchange="callChangefunc(this.value)" 
);

<script>
    function callChangefunc(val)
        window.location.href = "/Controller/ActionMethod?value=" + val;
    
</script>

【讨论】:

我正在尝试获取该选项的文本,但是当我编写 this.text 时,它似乎不起作用。如何获取文本? @BurakKarakuş...用于获取选定的文本...代码会有所不同...请参阅fiddle【参考方案2】:

你可以这样做

@Html.DropDownList("Sortby", new SelectListItem[]  new SelectListItem() 
   

       Text = "Newest to Oldest", Value = "0" , new SelectListItem()  Text = "Oldest to Newest", Value = "1"  , new
       
           onchange = @"form.submit();"
       
)

【讨论】:

如何使用@Html.DropDownListFor【参考方案3】:

如果你向 action 方法传递一个值,你可以试试这个。

@Html.DropDownList("Sortby", new SelectListItem[]  new SelectListItem()  Text = "Newest to Oldest", Value = "0" , new SelectListItem()  Text = "Oldest to Newest", Value = "1" ,new  onchange = "document.location.href = '/ControllerName/ActionName?id=' + this.options[this.selectedIndex].value;" )

不传参数的情况下删除查询字符串。

【讨论】:

this.options[this.selectedIndex].value 是默认的吗?如何将所选选项值分配给 this.options[this.selectedIndex].value? @Nabid 我不太确定你的默认意思是什么......它是纯javascript。 'this' 指向当前的 html 元素;在上述情况下,它的 Sortby 是什么?是 viewbag 变量名还是别的什么?【参考方案4】:

如果你有一个列表视图,你可以这样做:

    定义一个选择列表:

    @
       var Acciones = new SelectList(new[]
       
      new SelectListItem  Text = "Modificar", Value = 
       Url.Action("Edit", "Countries"),
      new SelectListItem  Text = "Detallar", Value = 
      Url.Action("Details", "Countries") ,
      new SelectListItem  Text = "Eliminar", Value = 
      Url.Action("Delete", "Countries") ,
     , "Value", "Text");
    
    

    使用定义的SelectList,为每条记录创建一个不同的id(记住每个元素的id在一个视图中必须是唯一的),最后为onchange事件调用一个javascript函数(包括例子url和记录键中的参数):

    @Html.DropDownList("ddAcciones", Acciones, "Acciones", new  id = 
    item.CountryID, @onchange = "RealizarAccion(this.value ,id)" )
    

    onchange 函数可以是:

    @section Scripts 
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    
    <script type="text/javascript">
    
    function RealizarAccion(accion, country)
    
    
        var url = accion + '/' + country;
        if (url != null && url != '') 
            window.location.href = url ;
        
    
    </script>
    
    @Scripts.Render("~/bundles/jqueryval")
    
    

【讨论】:

【参考方案5】:

试试这个:

@Html.DropDownList("Sortby", new SelectListItem[]  new SelectListItem() 
 Text = "Newest to Oldest", Value = "0" , new SelectListItem() 
 Text = "Oldest to Newest", Value = "1" ,
new  onchange = "document.location.href = '/ControllerName/ActionName?id=' + this.options[this.selectedIndex].value;" )

【讨论】:

【参考方案6】:

首先你需要提供你的下拉 onchange 事件;

@Html.DropDownList("ddl_reportId", new SelectList(ViewBag.ddl_reportName, "ddl_reportId", "ddl_reportName"), "Raporu seçin", new  @class = "form-control", @onchange = "getVal()" )

然后在脚本部分你必须这样称呼它。

function getVal() 
    var selectedVal = document.getElementById("ddl_reportId").value;
    console.log(selectedVal);

【讨论】:

请包含@HTML....部分的代码格式

以上是关于html.dropdownlist 的 onchange 事件的主要内容,如果未能解决你的问题,请参考以下文章

在@Html.DropDownList 中从控制器端绑定下拉列表选择的值

如何通过手动赋值来使用@Html.DropDownList? [复制]

在ASP.NET MVC中使用DropDownList

将 Html.DropDownList 的选定值传递给控制器

如何在 html-page 中使用 Dropdownlist 更改选择?

怎么使用JS获取@Html.DropDownList页面选中值