我有级联下拉列表来显示所选公司的联系人列表。使用 JSON 请求如下请求所选公司的联系人。
在观点上:
$('#companyId').change(function () {
var selectedCompany = $(this).val();
if (selectedCompany != null && selectedCompany != '') {
$.getJSON('@Url.Action("Contacts")', { id: selectedCompany },
function (Contacts) {
var contactSelect = $('#contactId');
contactSelect.empty();
$.each(Contacts, function (index, contact) {
contactSelect.append($('<option/>', {
value: contact.value,
text: contact.text
}));
});
});
}
});
控制器:
public ActionResult Contacts(int id)
{
return Json(
db.Contacts.Where(x=>x.deleted==false).
Select(c => new { value = c.contactId, text = c.contactName, c.companyId }).
Where(t => (int)t.companyId == id).OrderBy(x=>x.text),
JsonRequestBehavior.AllowGet
);
}
这工作得很好。但是,此服务器端代码仅对任何选定的公司(在第一个下拉列表中)首次执行。IE。如果我选择 ComanyA,然后是 CompanyB,然后再次选择 CompanyA,它不会从服务器中获取联系人列表,而是从缓存中填充。因此,新联系人未按预期填充。
任何帮助都会很棒!