2016-11-21 2 views
0

У меня есть выпадающий список штатов США. Когда пользователь выбирает состояние, должен быть заполнен другой выпадающий список county/parrish. Я собираю информацию, чтобы заполнить графство, выпадающее из хранимой процедуры. Проблема в том, что она возвращает объект Object для каждого округа, и я не знаю, что делать, чтобы исправить это.MVC Cascading Dropdown с использованием JQuery AJAX

здесь код в контроллере

public ActionResult FillCountyList(string State) 
{ 
    Models.CountyList mod = new CountyList(); 
    mod.TheState = State; 
    List<ListCountiesByState_Result> Counties = mod.ListCounties(); 
    return Json(Counties, JsonRequestBehavior.AllowGet); 
}  

Я также попытался следующие действия в мой контроллер, и он также возвращает список, показывающий объект Object для каждого округа

public JsonResult FillCountyList(string State) 
{ 
    IEnumerable<SelectListItem> Counties = db.ListCountiesByState(State).Select(c => new SelectListItem { 
      Value = c.County, 
      Text = c.County 
    }).ToList(); 
    return Json(Counties, JsonRequestBehavior.AllowGet); 
} 

Вот код jquery на вид

$('#State').change(function() { 
    var stateid = $('#State').val(); 
    $.ajax({ 
     url: '/Profile/BackgroundData/FillCountyList', 
     type: 'GET', 
     datatype: 'JSON', 
     data: { State: stateid }, 
     success: function (result) { 
      $('#CountyOrParrish').html(''); 
      $('#CountyOrParrish').append($('<option>Make Selection</option>')); 
      $.each(result, function (i, item) { 
       $('#CountyOrParrish').append($('<option></option>').text(item)); 
      }); 
     } 
    }); 
}); 

ответ

0

Проверьте, правильно ли ваш метод возвращает страны. Также изменится:

$('<option></option>').text(item)); 

к:

$('<option></option>').val(item.Value).html(item.Text)); 
+0

Я уже пробовал это. Он по-прежнему возвращает объект Object для каждого значения –

+0

Вы проверили свой метод 'FillCountyList' правильно? – Hadee

+0

ОК, я попробовал со вторым примером контроллера, и это работает! благодаря –

0

Вы можете получить доступ к своим округам на javascr ipt только используя "." поскольку каждый элемент в вашем результате является объектом json:

$.each(result, function (i, item) { 
      $('#CountyOrParrish').append($('<option></option>').text(item.CountyName)); 
     }); 
+0

Я знаю, что он должен работать, но он возвращает следующее сообщение «Intellisense не смог определить точный список завершения для этого выражения Предоставленный список содержит все идентификаторы в. файл." А затем на странице он ничего не показывает, кроме пустой строки для текста. –