我有5个下拉框,如(国家,州,区,镇,街道) 当我选择国家时,我正在加载属于该国家的(州,区,镇,街道)。
我的问题是,现在我正在为此进行4次单独的ajax调用。
$('#Country').change(function(){
var procemessage = "<option value='0'> Please wait...</option>";
$("#State").html(procemessage).show();
var CountryId = $(this).val();
$.ajax({
url: '../Home/LoadStateForCountry?CountryId=' + CountryId,
success: function (result) {
var markup = "";
if (result.length < 1) {
markup = "<option value='0'>--Nothing to Select--</option>";
} else {
data = result;
markup = "<option value='0'>--Select--</option>";
for (var x = 0; x < data.length; x++) {
markup += "<option value=" + data[x].ValueId + ">" + data[x].DisplayText + "</option>";
}
}
$("#State").html(markup).show();
},
error: function (result) { }
});
});
$('#Country').change(function(){
//Load district
});
$('#Country').change(function(){
//Load town
});
$('#Country').change(funstion(){
//Load street
});
这样做是对的。或者无论如何都要立即打电话 我是MVC的新手。所以请指导我。
答案 0 :(得分:0)
您只需使用ajax调用即可加载国家/地区状态
$('#Country').change(funstion(){
BindStateDropDown();
BindDistrictDropDown();
BindTownDropDown();
BindStreetDropDown();
});
或者你可以做什么在回拨一个ajax电话时你可以再打一次ajax电话 假设在回调LoadState时你可以进行另一个ajax调用来加载District。
$.get("URLToLoadState",{CountryId:CountryId <Just a parameter>},function(data){
BindDistrict()
});
在学区回电话,你可以去镇,然后去街。
或其他选项是,
您可以为所有这些实体创建包装类,例如
public class LocationModel
{
public List<StateModel> StateList{get;set;}
public List<DistrictModel> StateList{get;set;}
public List<TownModel> StateList{get;set;}
public List<StreetModel> StateList{get;set;}
}
在更改国家/地区时,您可以通过一次通话获得所有收藏
$('#Country').change(funstion(){
$.get("UrlToLoadLocations",{CountryId:CountryId},function(data){
BindStateDropDown(data.StateList);
BindStateDropDown(data.DistrictList);
BindStateDropDown(data.TownList);
BindStateDropDown(data.StreetList);
});
});