onchange event for html.dropdownlist

后端 未结 5 408
眼角桃花
眼角桃花 2020-12-01 05:58

I am trying to trigger an action method for onchange event for dropdownlist, how can I do this without using jquery onchange.

@Html.DropDownList(\"Sortby\",          


        
相关标签:
5条回答
  • 2020-12-01 06:30

    You can do this

    @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();"
           }
    })
    
    0 讨论(0)
  • 2020-12-01 06:30

    If you don't want jquery then you can do it with 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>
    
    0 讨论(0)
  • 2020-12-01 06:40

    try this :

    @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;" })
    
    0 讨论(0)
  • 2020-12-01 06:43

    You can try this if you are passing a value to the action method.

    @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;" })
    

    Remove the query string in case of no parameter passing.

    0 讨论(0)
  • 2020-12-01 06:52

    If you have a list view you can do this:

    1. Define a select list:

      @{
         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");
      }
      
    2. Use the defined SelectList, creating a diferent id for each record (remember that id of each element must be unique in a view), and finally call a javascript function for onchange event (include parameters in example url and record key):

      @Html.DropDownList("ddAcciones", Acciones, "Acciones", new { id = 
      item.CountryID, @onchange = "RealizarAccion(this.value ,id)" })
      
    3. onchange function can be something as:

      @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")
      }
      
    0 讨论(0)
提交回复
热议问题