В настоящее время я получаю сообщение об ошибке при попытке заполнить каскадный список выбора, функция javascript которого вызывается при изменении предыдущего списка, однако каждый раз, когда контроллер возвращает объект json обратно на Ajax обратный вызов, Google Chrome DevTools выдает ошибку:
DevTools was from the page
Once page is reloaded, DevTools will automatically reconnect
Я попытался включить журналы и запустить Chrome с использованием флагов, однако ничего не регистрируется, ничего не сохраняется в журналах в сети либо tab.
Я протестировал заполнение тега select путем добавления кнопки отправки в первый раскрывающийся список и вызова / заполнения второго раскрывающегося списка таким образом, и это, кажется, работает нормально. Есть ли какая-либо причина, по которой использование onchange
на Html.DropDownListFor()
приведет к тому, что DevTools выдаст эту ошибку?
PartialView, содержащий код (я добавил обе использованные мной техники):
<div class="form-group">
<label>Select Country</label>
<!-- This works in filling the second dropdownlist. -->
@Html.DropDownListFor(m => m.SelectedCountry, new SelectList(Model.Country, "FieldID", "Value"), new { @id = "_ddlCountries", @class = "fr-select" })
<button type="submit" onclick="javascript: GetCities()">Test</button>
<!-- ********************************************** -->
<!-- This does not work in filling the second dropdown -->
@Html.DropDownListFor(m => m.SelectedCountry, new SelectList(Model.Country, "FieldID", "Value"), new { @id = "_ddlCountries", @class = "fr-select", onchange="javascript: GetCities()" })
<!-- ********************************************** -->
</div>
<div class="form-group">
<label>Select City</label>
<select class="fr-select" id="_cities"></select>
</div>
Оба попадают в приведенную ниже функцию javascript, но onchange
выдает сообщение / ошибку DevTools:
function GetCities() {
debugger;
var ddlText = $('#_ddlCountries option:selected').text();
$.ajax({
url: '@Url.Action("GetCities", "Home")',
type: 'POST',
data: JSON.stringify(ddlText),
contentType: 'Application/json',
success: function (result) {
debugger;
//Create a markup for a select
var markup = "";
//Populate the markup
for (var i = 0; i < result.length; i++) {
markup += "<option Value=" + result[i].FieldID + ">" + result[i].Value + "</option>";
}
//Populate dropdown with value
$("#_cities").html(markup).show();
}
})
}
Действие контроллера:
public ActionResult GetCities([FromBody] string ddlText)
{
List<FieldMap> cities = new List<FieldMap>();
cities.Add(new FieldMap
{
FieldID = 0,
Value = "-- Please Select a City --"
});
foreach (var city in _uploadedFileModel.cities.Where(x => x.name == ddlText).OrderBy(x => x.city.name))
{
cities.Add(new FieldMap
{
FieldID = cities.Select(x => x.FieldID).Max() + 1,
Value = city.name
});
}
return Json(cities);
}
Это работает с использованием MVC Framework, но по какой-то причине это не с Core. Есть ли причина, по которой onchange
будет вызывать эту ошибку?