ASP.NET MVC - Cascading Drop Down

后端 未结 4 1085
日久生厌
日久生厌 2020-12-03 04:30

I\'m currently learning ASP.NET MVC and using Nhibernate.

I would like to use Cascading Drop-Down Boxes. Has anyone managed to get cascading drop-down boxes working

4条回答
  •  自闭症患者
    2020-12-03 04:46

    You might want to have a look at a post I made a couple of weeks ago on exactly this

    First we will need to setup the JsonResult controller action.

    ///   
    /// Get Models
    ///   
    ///   
    public JsonResult GetModels(string id)  
    {       
       JsonResult result = new JsonResult();       
       var filteredModels = from model in homeViewModel.Models
                            where model.MakeID.ToString() == id
                            select model;       result.Data = filteredModels.ToList();
       result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;    
       return result;  
    } 
    

    This method now gives us the ability to use the nifty $.getJSON jquery call. The signature for the call is as follows

    jQuery.getJSON( url, [ data ], [ callback(data, textStatus) ] )
    

    Given that we have setup 2 Drop Down Lists, one for Makes and the other for Models, like so.

       Html.DropDownListFor((model) => model.MakeID, new SelectList(Model.Makes, "ID", "Description"))    
       Html.DropDownListFor((model) => model.ModelID, new SelectList(Model.Models, "ID", "Description"))
    

    we can include the following bit of jquery

    //Hook onto the MakeID list's onchange event  
    $("#MakeID").change(function() {   
       //build the request url   
       var url = '' + 'Home/GetModels';
    
       //fire off the request, passing it the id which is the MakeID's selected item value   
       $.getJSON(url, { id: $("#MakeID").val() }, function(data) {    
          //Clear the Model list    
          $("#ModelID").empty();    
          //Foreach Model in the list, add a model option from the data returned    
          $.each(data, function(index, optionData) {       
             $("ModelID").append(""  );    
          });
       });  
    }).change();
    

    Sorry for the shameless plug :(

提交回复
热议问题