我在一个表单上有一个州下拉列表,当用户选择一个州时,我希望城市下拉列表只填充与该州相关的城市。
我的表单检视中有2个选取方块:
<div class="col-md-3 py-2">
<label asp-for="@Model.Quote.CompanyState" class="form-label"></label>
<select asp-for="@Model.Quote.CompanyState" asp-items="@Model.States" class="form-select">
<option selected>Choose...</option>
</select>
<span asp-validation-for="@Model.Quote.CompanyState" class="text-danger"></span>
</div>
<div id="cityDDL" class="col-md-3 py-2" style="display:none;">
<label asp-for="@Model.Quote.CompanyCity" class="form-label"></label>
<select asp-for="@Model.Quote.CompanyCity" asp-items="@Model.Cities" class="form-select">
<option selected>Choose...</option>
</select>
<span asp-validation-for="@Model.Quote.CompanyCity" class="text-danger"></span>
</div>
然后我有一个Javascript,当选择州时,它通过 AJAX 获取城市:
$('#Quote_CompanyState').on('change', function () {
var state = $('#Quote_CompanyState Option:Selected').val();
Quote.GetCitiesDropDown(state);
})
我对控制器的 AJAX 调用:
Quote.GetCitiesDropDown = function (state) {
$.ajax({
url: Global.basePath + 'Quote/GetCitiesDropDown',
type: "POST",
dataType: 'json',//if returning view, must be html, else use json
data: {state: state},
cache: false,
success: function (data) {
console.log(data);
$('#cityDDL').show();
},
error: function (xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert('Error: ' + err.quote_error[0]);
},
complete: function (data) {
}
});
}
我的控制器,它获取与所选州有关的城市的SelectListItems:
[HttpPost]
public IActionResult GetCitiesDropDown(string state)
{
//var statesJSON = _config.GetSection("UnitedStatesList").Get<Dictionary<string,string>>();
var cities = _config.GetSection("CitiesByState").GetSection(state).Get<Dictionary<string, string>>();
var citiesDDIs = cities.Select(city => new SelectListItem
{
Value = city.ToString(),
Text = city.ToString()
}).ToList();
return Json(citiesDDIs);
}
现在,它将对象返回到 AJAX 调用的成功部分,但是我如何设置下拉视图javascript的选项项呢?这是我通过javascript获得的数据......我希望设置asp-items值......但我不确定如何使用Javascript来完成这一操作。下面是它返回的亚拉巴马州的城市,例如:
1条答案
按热度按时间pdkcd3nj1#
所以从控制器返回一个字典会向 AJAX 调用发送一个对象。我必须弄清楚如何在JS中循环通过该对象: