我尝试在用户更改特定下拉列表时加载ListboxFor控件。下面是我试图实现它的代码,但它不起作用。 任何人都可以指导我吗?提前谢谢。
@Html.ListBoxFor(c => c.ClientDemographicHospitalId, new MultiSelectList(Model.Hospitals, "Value", "Text"), new { ng_model = "hospitalDropdownList", @class = "HospitalListbox", style = "width:65%" })
$.ajax({
url: '/Controller/ActionMethod',
type: "POST",
dataType: "JSON",
data: { clientId: clientId },
success: function (data) {
$("#ClientDemographicHospitalId").empty();
$("#ClientDemographicHospitalId").append($('<option></option>').val(0).html("Select Hospital"));
$.each(data, function (i, hospitals) {
$("#ClientDemographicHospitalId").append($('<option></option>').val(hospitals.ClientDemographicHospitalId).html(hospitals.Name));
});
}
});
public ActionResult GetHospitalsByClient(int clientId)
{
JsonResult result = new JsonResult();
var hospitals = GetHospital(clientId);
if (hospitals != null)
{
result.Data = hospitals.ToList();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
return result;
}
答案 0 :(得分:-1)
也许您可以通过检查DOM元素来查看浏览器中呈现的HTML?我认为问题可能就在那里,也因为你从我假设的表中获取ID,并且你可能在ListBox中获得了一个ID为'20932'的ID,并且你试图用ID #ClientDemographicHospitalId调用一个元素,这可能与您指向的不同,在这种情况下,您应该使用HospitalListbox类并调用Jquery元素,如:
$(".HospitalListbox").empty();
$(".HospitalListbox").empty();
$(".HospitalListbox").append($('<option></option>').val(0).html("Select Hospital"));
$.each(data, function (i, hospitals) {
$(".HospitalListbox").append($('<option></option>').val(hospitals.ClientDemographicHospitalId).html(hospitals.Name));
});
同样在AJAX调用成功之内,放一个console.log(数据);确切地查看您正在接收哪些数据并希望将这些数据放入这些元素中。