我有两个级联下拉菜单,第一个下拉菜单显示国家/地区列表,根据选择的国家/地区填充下一个下拉菜单。问题是,当我从下拉菜单中选择值时,其他下拉菜单未填充
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.DropDownListFor(x => x.CountryId, Model.Countries,"SEC",null)
<br />
@Html.DropDownListFor(x => x.CityId, Model.Cities, "SEC", null)
<button>Kaydet</button>
}
<div>
COUNTRYId:@Model.CountryId
</div>
<div>
CİTYId:@Model.CityId
</div>
<script>
$('#CountryId').change(function () {
var val = $(this).val();
if (val != "" || val != -1) {
$('#CountryId option').not(":first").remove();
$.ajax({
method: "GET",
url: '@Url.Action("GetByCountryId","Home")' + "/" + val;
}).done(function (result) {
for (var i = 0; i < result.length; i++) {
var name = result[i].CityName;
var id = result[i].CityId;
var option = $('<option></option>');
option.text(name);
option.val(id);
$('#CityId').append(option);
}
})
} else {
$('#CountryId option').not(":first").remove();
}
})
</script>
public JsonResult GetByCountryId(int id)
{
var cities = Cities.GetFakeCities().Where(x => x.CountryId == id).ToList();
return Json(cities, JsonRequestBehavior.AllowGet);
}
我做错什么了?你能帮我吗
1条答案
按热度按时间yduiuuwa1#
问题是当我从下拉列表中选择值时,其他下拉列表没有被填充。我做错了什么?
好吧,在
var option = $('<option></option>');
中我们有text
和value
来添加项目,但是你用的是option.val(id);
,这是不正确的。另外,你的实现方式也很笨拙。既然你用的是javascript,为什么不完全用javascript来处理呢?下面是一个完整的示例:
型号:
控制器:
查看:
输出: