2017-01-24 3 views
-1

Привет Пожалуйста, помогите в следующем. У меня есть раскрывающийся список, в котором есть населенные пункты. Я создал проект MVC, где у меня есть действие контроллера, которое получает пригород для города, выбранного в первом выпадающем списке, однако мой код, кажется, терпит неудачу, пожалуйста, помогите. см. ниже код.Каскадирование DropDown JQuery

Метод контроллера.

public JsonResult GetSurburbs(string id) 
    { 
     List<SelectListItem> states = new List<SelectListItem>(); 
     switch (id) 
     { 
      //Alberton surbubs 
      case "1": 
       states.Add(new SelectListItem { Text = "Select", Value = "0" }); 
       states.Add(new SelectListItem { Text = "ALBERANTE", Value = "1" }); 
       states.Add(new SelectListItem { Text = "ALBERTON", Value = "2" }); 
       states.Add(new SelectListItem { Text = "ALBERTSDAL", Value = "3" }); 
       states.Add(new SelectListItem { Text = "ALRODE", Value = "4" }); 
       states.Add(new SelectListItem { Text = "ALRODE SOUTH", Value = "5" }); 
       states.Add(new SelectListItem { Text = "ARTON", Value = "6" }); 
       states.Add(new SelectListItem { Text = "BASSONIA ROCK", Value = "7" }); 
       states.Add(new SelectListItem { Text = "BRACKENDOWNS", Value = "8" }); 
       states.Add(new SelectListItem { Text = "BRACKENHURST", Value = "9" }); 
       states.Add(new SelectListItem { Text = "EDEN PARK", Value = "10" }); 
       states.Add(new SelectListItem { Text = "EDEN PARK WEST", Value = "11" }); 
       states.Add(new SelectListItem { Text = "ELANDSFONTEIN 108-IR", Value = "12" }); 
       states.Add(new SelectListItem { Text = "FLORENTIA", Value = "13" }); 
       states.Add(new SelectListItem { Text = "GENERAAL ALBERTSPARK", Value = "14" }); 
       states.Add(new SelectListItem { Text = "GREENFIELDS", Value = "15" }); 
       states.Add(new SelectListItem { Text = "KLIPRIVIERSBERG 106-IR", Value = "16" }); 
       states.Add(new SelectListItem { Text = "KROMVLEI 142-IR", Value = "17" }); 
       states.Add(new SelectListItem { Text = "LINMEYER", Value = "18" }); 
       states.Add(new SelectListItem { Text = "MAYBERRY PARK", Value = "19" }); 
       states.Add(new SelectListItem { Text = "MAYRO PARK", Value = "20" }); 
       states.Add(new SelectListItem { Text = "MEYERSDAL", Value = "21" }); 
       states.Add(new SelectListItem { Text = "MEYERSDAL NATURE ESTATE", Value = "22" }); 
       states.Add(new SelectListItem { Text = "MPILISWENI", Value = "23" }); 
       states.Add(new SelectListItem { Text = "NEW MARKET AH", Value = "24" }); 
       states.Add(new SelectListItem { Text = "NEW MARKET MANOR", Value = "25" }); 
       states.Add(new SelectListItem { Text = "NEW MARKET PARK", Value = "26" }); 
       states.Add(new SelectListItem { Text = "NEW REDRUTH", Value = "27" }); 
       states.Add(new SelectListItem { Text = "OTHANDWENI", Value = "28" }); 
       states.Add(new SelectListItem { Text = "PALMIETFONTEIN 141-IR", Value = "29" }); 
       states.Add(new SelectListItem { Text = "PHOLA PARK", Value = "30" }); 
       states.Add(new SelectListItem { Text = "RACEVIEW", Value = "31" }); 
       states.Add(new SelectListItem { Text = "RANDHART", Value = "32" }); 
       states.Add(new SelectListItem { Text = "ROODEKOP 139-IR", Value = "33" }); 
       states.Add(new SelectListItem { Text = "ROOIKOP 140-IR", Value = "34" }); 
       states.Add(new SelectListItem { Text = "ROXTON", Value = "35" }); 
       states.Add(new SelectListItem { Text = "SOUTHCREST", Value = "36" }); 
       states.Add(new SelectListItem { Text = "SOUTHDOWNS", Value = "37" }); 
       states.Add(new SelectListItem { Text = "THINASONKE", Value = "38" }); 
       states.Add(new SelectListItem { Text = "THINTWA VILLAGE", Value = "39" }); 
       states.Add(new SelectListItem { Text = "TOKOZA", Value = "40" }); 
       states.Add(new SelectListItem { Text = "TOKOZA 198-IR", Value = "41" }); 
       states.Add(new SelectListItem { Text = "VERWOERDPARK", Value = "42" }); 
       states.Add(new SelectListItem { Text = "WATERVALSPRUIT", Value = "43" }); 
       states.Add(new SelectListItem { Text = "WATERVAL 150-IR", Value = "44" }); 
       states.Add(new SelectListItem { Text = "ZWARTKOPJES 143-IR", Value = "45" }); 
       break; 

      //Bedfordview surbubs 
      case "2": 
       states.Add(new SelectListItem { Text = "Select", Value = "0" }); 
       states.Add(new SelectListItem { Text = "BEDFORD 62-IR", Value = "1" }); 
       states.Add(new SelectListItem { Text = "BEDFORD 68-IR", Value = "2" }); 
       states.Add(new SelectListItem { Text = "BEDFORD GARDENS", Value = "3" }); 
       states.Add(new SelectListItem { Text = "BEDFORD PARK", Value = "4" }); 
       states.Add(new SelectListItem { Text = "BEDFORDVIEW", Value = "5" }); 
       states.Add(new SelectListItem { Text = "ELANDSFONTEIN 90-IR", Value = "6" }); 
       states.Add(new SelectListItem { Text = "ESSEXWOLD", Value = "7" }); 
       states.Add(new SelectListItem { Text = "GELDENHUIS ESTATE SH", Value = "8" }); 
       states.Add(new SelectListItem { Text = "MALVERN EAST", Value = "9" }); 
       states.Add(new SelectListItem { Text = "MORNINGHILL", Value = "10" }); 
       states.Add(new SelectListItem { Text = "OOSPOORT", Value = "11" }); 
       states.Add(new SelectListItem { Text = "ORIEL", Value = "12" }); 
       states.Add(new SelectListItem { Text = "SENDERWOOD", Value = "13" }); 
       states.Add(new SelectListItem { Text = "ST ANDREWS", Value = "14" }); 
       break; 

      //Benoni surbubs 
      case "3": 
     // break; 

     } 
     return Json(new SelectList(states, "Value", "Text"), JsonRequestBehavior.AllowGet); 
    } 

Вот мой взгляд HTML Помощники для dropdpnws

<div class="form-group"> 
              @Html.LabelFor(m => m.Town, new { @class = "col-md-2 control-label" }) 
              <div class="col-md-10"> 
               @*@Html.DropDownListFor(model => model.Town, new SelectList(new string[] { "Alberton", "Bedfordview", "Benoni", "Boksburg", "Brakpan", "Edenvale", "Germiston", "Isando", "OR Tambo Airport", "Kempton Park", "Nigel", "OR Tambo International", "Springs" }))*@ 
               @Html.DropDownList("Town", new SelectList(new string[] { "Alberton", "Bedfordview", "Benoni", "Boksburg", "Brakpan", "Edenvale", "Germiston", "Isando", "OR Tambo Airport", "Kempton Park", "Nigel", "OR Tambo International", "Springs" })) 
              </div> 
             </div> 
             <div class="form-group"> 
              @Html.Label("Surburb", new { @class = "col-md-2 control-label" }) 
              <div class="col-md-10"> 
               @Html.DropDownList("Surburb", new SelectList(string.Empty, "Value", "Text"), "Please select a Surburb", new { style = "width:250px", @class = "dropdown1" }) 
              </div> 
             </div> 

Вот мой Jquery код для заполнения данных.

<script type="text/javascript"> 

    $(document).ready(function() { 
     //Dropdownlist Selectedchange event 
     $("#Town").change(function() { 
      $("#Surburb").empty(); 
      $.ajax({ 
       type: 'GET', 
       url: '@Url.Action("GetSurburbs")', // we are calling json method 

       dataType: 'json', 

       data: { id: $("#Town").val() }, 
       // here we are get value of selected country and passing same value 


       success: function (states) { 
        // states contains the JSON formatted list 
        // of states passed from the controller 

        $.each(states, function (i, state) { 
         $("#Surburb").append('<option value="' + state.Value + '">' + 
         state.Text + '</option>'); 
         // here we are adding option for States 

        }); 
       }, 
       error: function (ex) { 
        alert('Failed to retrieve Surburbs.' + ex); 
       } 
      }); 
      return false; 
     }) 
    }); 

Код неудачу за исключением в Jquery, Не RTO retrive пригороды, пожалуйста, помогите мне.

+0

Вы можете предупредить «бывшую» и проверить, что выливается? Или вы можете проверить консоль, чтобы узнать, что является ошибкой в ​​запросе AJAX? –

+0

Не связано, но нет смысла возвращать 'SelectList' (и создать второй идентичный' SelectList', используя 'new SelectList (...)' от 1-го, это просто бессмысленные дополнительные накладные расходы). Просто верните коллекцию анонимных объектов, содержащих 2 свойства, которые вам нужны. Вам нужно отладить свой код в методе контроллера и определить, какое исключение выбрасывается, и где –

+0

Получаете что-либо в параметре состояния в успехе. Пожалуйста, проверьте его в консоли – Nadeem

ответ

0

Возможно, вам нужно поставить id в URL вместо: инструменты разработчика F12

url: '@(Url.Action("GetSurburbs"))?id=' + $("#Town").val(), 

вашего браузера поможет. Он отображает запрос и ответ от сервера, поэтому вы можете видеть, что происходит.

Смежные вопросы