C# 带有JSON的级联下拉列表不会带来新记录
我有层叠的下拉列表来显示所选公司的联系人列表。使用JSON请求按如下方式请求所选公司的联系人 关于这一观点: 这很有效。但是,此服务器端代码仅在第一个下拉列表中为任何选定的公司第一次执行。例如,如果我选择ComanyA,然后选择CompanyB,再选择CompanyA,它不会从服务器中带来联系人列表,而是从缓存中填充。因此,新联系人未按预期填充C# 带有JSON的级联下拉列表不会带来新记录,c#,javascript,jquery,json,asp.net-mvc-3,C#,Javascript,Jquery,Json,Asp.net Mvc 3,我有层叠的下拉列表来显示所选公司的联系人列表。使用JSON请求按如下方式请求所选公司的联系人 关于这一观点: 这很有效。但是,此服务器端代码仅在第一个下拉列表中为任何选定的公司第一次执行。例如,如果我选择ComanyA,然后选择CompanyB,再选择CompanyA,它不会从服务器中带来联系人列表,而是从缓存中填充。因此,新联系人未按预期填充 任何帮助都会很好 您需要在请求中添加一个随机数,以便浏览器认为每次都是单独的呼叫。您可以将代码更改为: $.getJSON('@Url.Action("
任何帮助都会很好 您需要在请求中添加一个随机数,以便浏览器认为每次都是单独的呼叫。您可以将代码更改为:
$.getJSON('@Url.Action("Contacts")', { id: selectedCompany, n : Math.random() },
function (Contacts) {
var contactSelect = $('#contactId');
contactSelect.empty();
$.each(Contacts, function (index, contact) {
contactSelect.append($('<option/>', {
value: contact.value,
text: contact.text
}));
});
});
这就是IE缓存的问题,在客户端或服务器端解决它的方法很少。查看此问题了解详细信息和配方
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
);
}
$.getJSON('@Url.Action("Contacts")', { id: selectedCompany, n : Math.random() },
function (Contacts) {
var contactSelect = $('#contactId');
contactSelect.empty();
$.each(Contacts, function (index, contact) {
contactSelect.append($('<option/>', {
value: contact.value,
text: contact.text
}));
});
});