У меня есть две выпадающие списки. Во-первых comobobox я заполнить таким образом, и это работает прекрасно:ASP.NET MVC 3 Cascading combobox не работает
@Html.DropDownListFor(
x => x.Town,
new SelectList(Model.Towns, "Value", "Text"),
"-- Select town --")
public IEnumerable<SelectListItem> Towns
{
get
{
List<DataRow> TownsListDB = OracleSelect("select * from Towns");
List<SelectListItem> townsItems = new List<SelectListItem>();
foreach (DataRow rw in TownsListDB)
{
townsItems.Add(new SelectListItem { Value = rw[0].ToString(),
Text = rw[1].ToString() });
}
return townsItems;
}
}
И зависит от города, я хочу, чтобы показать список больниц:
@Html.DropDownListFor(
x => x.Hospital,
Enumerable.Empty<SelectListItem>(),
"-- Select hospital --")
Мой JQuery код является:
$('#Town').change(function() {
var selectedTown = $(this).val();
if (selectedTown != null && selectedTown != '') {
$.getJSON('@Url.Action("Hospitals")', { town: selectedTown },
function (hospitals) {
var hospitalsSelect = $('#Hospital');
hospitalsSelect.empty();
$.each(hospitals, function(i, hospital) {
hospitalsSelect.append($('<option/>', {
value: hospital.value,
text: hospital.text
}));
});
});
}
});
и C#:
public ActionResult Hospitals(string town)
{
var modelHospital = new MedicalViewModel();
List<DataRow> HospitalsListDB = modelHospital.OracleSelect
("select * from Hospitals hh where hh.TownID = " + town);
List<SelectListItem> hospitalsItems = new List<SelectListItem>();
foreach (DataRow rw in HospitalsListDB)
{
//example:
//rw[0]=101111
//rw[1]=Dublin
hospitalsItems.Add(new SelectListItem { Value = rw[0].ToString(),
Text = rw[1].ToString() });
}
return Json(
hospitalsItems,
JsonRequestBehavior.AllowGet);
return Json(hospitalsItems, JsonRequestBehavior.AllowGet);
}
Но это не сработает. Если я использую этот код в результате возврата, то это нормально:
return Json(Enumerable.Range(1, 6).Select(x => new { value = x, text = x }),
JsonRequestBehavior.AllowGet
);
Почему выпадающий не работает с моим результатом списка из БД?
Он хорошо выглядит ли это тормоз. где-нибудь, или просто возвращает пустой список? Если он ломается, что сообщение об ошибке.Если он возвращает пустой список, вы дважды проверили, что запрос возвращает что-нибудь? –
Вы посмотрели, что происходит в Firebug/Инструменты разработчика, когда вы изменяете раскрывающийся список, должны быть в состоянии видеть, что отправляется, и что возвращается в ответ. – kolin
Я новичок в asp.net и jQuery, отладка jQuery помогла мне узнать об ошибке, thanx. –