Vraag onchange-evenement voor html.dropdownlist


Ik probeer een actiemethode te activeren voor een onchange-evenement voor dropdownlist, hoe kan ik dit doen zonder jQuery onchange te gebruiken.

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

Bedankt


25
2017-07-31 10:24


oorsprong


antwoorden:


Je kan dit doen

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

19
2017-07-31 10:34



Als u geen jQuery wilt, kunt u dit doen met 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>

35
2017-07-31 10:30



@Html.DropDownListFor(m => m.State,
              new SelectList(ViewBag.StateList, "StateId", "StateName"),
              "Select state",
              new { @class = "form-control", @onchange="FillCity()" })



function FillCity() {
    var stateId = $('#State').val();
    $.ajax({
        url: '/Employees/FillCity',
        type: "GET",
        dataType: "JSON",
        data: { State: stateId},
        success: function (cities) {                    
            $("#City").html(""); // clear before appending new list 
            $.each(cities, function (i, city) {
                $("#City").append(
                    $('<option></option>').val(city.CityId).html(city.CityName));
            });
        }
    });
  }

10
2017-09-09 09:37



U kunt dit proberen als u een waarde aan de actiemethode doorgeeft.

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

Verwijder de queryreeks in het geval dat er geen parameter wordt doorgegeven.


4
2017-07-31 10:44



Als u een lijstweergave hebt, kunt u dit doen:

  1. Definieer een selectielijst:

    @{
       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. Gebruik de gedefinieerde SelectList, maak een andere id voor elke record (onthoud dat id van elk element uniek moet zijn in een weergave) en ten slotte een javascript-functie aanroepen voor een onchange-gebeurtenis (inclusief parameters in voorbeeld-URL en record-toets):

    @Html.DropDownList("ddAcciones", Acciones, "Acciones", new { id = 
    item.CountryID, @onchange = "RealizarAccion(this.value ,id)" })
    
  3. onchange-functie kan iets zijn als:

    @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
2018-02-03 02:11