Итак, я прочитал некоторые другие подобные вопросы и не могу найти тот, который точно соответствует моему сценарию. У меня есть скрипт скрипт следующим образом:
$(document).ready(function() {
$(document).on("change", '[id*="SomeId]', function() {
SomeFunction();
});
});
function SomeFunction() {
$("SomeOtherId").load('@(Url.Action("ControllerMethod", "Controller", null, Request.Url.Scheme))?numberExample=' + 7);
});
<div class="col-md-10 mrgn-tp-sm">
@Html.DropDownListFor(model => model.SomeProperty, (SelectList)Model.SomeOtherProperty, htmlAttributes: new { @id="SomeId", @class="form-control" })
</div>
<div id="SomeOtherId" class="col-md-10 mrgn-tp-sm">
@Html.DropDownListFor(model => model.SomeEvenOtherProperty, (SelectList)Model.SomeEvenOtherOtherProperty, htmlAttributes: new { @class="form-control" })
</div>
Так что моя цель - когда пользователь выбирает другую опцию из первого выпадающего списка, второй выпадающий список будет динамически меняться. Это происходит при вызове функции .load ().
Вот что происходит. Я устанавливаю точку останова в начале метода в моем контроллере. Когда я запускаю приложение, я перехожу на эту страницу и выбираю вариант из первого выпадающего списка. SomeFunction()
вызывается и запускается .load () в SomeOtherId
div, что приводит к достижению точки останова. Метод контроллера визуализирует частичное представление, содержащее другой список, такой как @Html.DropDownListFor(model => model.SomeEvenOtherProperty, (SelectList)Model.SomeEvenOtherOtherProperty, htmlAttributes: new { @class = "form-control" })
, вместо старого. Теперь, если я выберу другую опцию из первого выпадающего списка, снова будет достигнута точка останова, а второй выпадающий список будет обновлен.
Проблема возникает, когда я возвращаюсь, чтобы выбрать свой первый вариант, точка останова не достигается, однако список все еще обновляется. Мне нужно достичь этой точки останова ВСЕГДА, однако кажется, что она фактически вызывает метод контроллера только один раз. Я отлаживал через Javascript и могу подтвердить, что SomeFunction()
вызывается каждый раз. Я также попытался поставить обратный вызов с предупреждением, чтобы убедиться, что функция .load () успешно выполняется. Эта проблема сохраняется даже после перезагрузки страницы. Единственный способ, которым я могу дважды достичь этой точки останова для одного варианта, это если я:
- Перезапустите приложение.
- Проверка элемента -> Консоль.
Как ни странно, когда я проверяю элемент на странице, он достигает точки останова более одного раза для определенной опции.
Дополнительные сведения:
Таким образом, проще говоря, второй раскрывающийся список должен содержать другой набор параметров в зависимости от того, какой параметр выбран в первом списке. Однако если пользователь решит сохранить новый объект, содержащий комбинацию варианта 2 из списка 1 и варианта 2 из списка 2, он не сможет сохранить другой объект с этой же комбинацией.
Таким образом, поскольку эта проблема сохраняется до перезапуска приложения, она позволяет пользователю создавать ту же комбинацию ДВАЖДЫ, поскольку вместо второго раскрывающегося списка отображается старый список. Целью метода контроллера является визуализация отфильтрованного списка путем быстрого вызова БД, чтобы выяснить, какие комбинации существуют. Если пользователь сохранил Вариант 2 из Списка 1 и Вариант 2 из Списка 2 в БД, когда они возвращаются к созданию другой комбинации, они не должны отображаться Вариант 2 в Списке 2, если они выбирают Вариант 2 из Списка 1. Однако, поскольку Метод контроллера вызывается только в первый раз, когда они создают комбинацию, когда они решают создать другую комбинацию для варианта 2 из списка 1, он отобразит старый список, отображая вариант 2 из списка 2.