потому что вы используете JQuery для всего остального.

я есть модальное окно, используемое для обновления или добавления нового объектаStore.

Этот модальный режим вызывается удаленно, информация о котором загружается из метода GET, созданного в ASP.NET.

Кнопка, которая вызывает модал:

<div class="btn-group" id="modalbutton">
    <a id="createEditStoreModal" data-toggle="modal" asp-action="Create" 
         data-target="#modal-action-store" class="btn btn-primary">
            <i class="glyphicon glyphicon-plus"></i>  NEW STORE
        </a>
</div>

HTML модальной:

@model Application.Models.ApplicationviewModels.StoreIndexData
@using Application.Models

<form asp-action="Create" role="form">    
        @await Html.PartialAsync("_ModalHeader", new ModalHeader
    { Heading = String.Format("Actualización de Modelo: Tiendas") })

        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="modal-body form-horizontal">
            <div class="form-group">
                <label asp-for="DepartmentID" class="col-md-2 control-label"></label>
                <div class="col-md-10">
                    <select asp-for="DepartmentID" class="form-control"
                            asp-items="@(new SelectList(@ViewBag.ListofDepartment,"DepartmentID","DepartmentName"))"></select>
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label">Distrito</label>
                <div class="col-md-10">
                    <select class="form-control" id="DistrictID" name="DistrictID" asp-for="DistrictID"
                            asp-items="@(new SelectList(@ViewBag.ListofDistrict,"DistrictID","DistrictName"))"></select>
                </div>
            </div>
            {... more elements}
       </div>
</form>

ПОЛУЧИТЬ метод:

    public IActionResult Create(int? id)
    {
        List<Department> DepartmentList = new List<Department>();
        DepartmentList = (from department in _context.Departments
                          select department).ToList();
        DepartmentList.Insert(0, new Department { DepartmentID = 0, DepartmentName = "-- Seleccione Departamento --" });
        ViewBag.ListofDepartment = DepartmentList;

        StoreIndexData edit = new StoreIndexData();
        List<District> ListofDistrict = new List<District>();
        ListofDistrict.Insert(0, new District { DistrictID = 0, DistrictName = "-- PRUEBA --" });
        ViewBag.ListofDistrict = ListofDistrict;

        return PartialView("~/Views/Shared/Stores/_Create.cshtml");
    }

Проблема:

У меня есть следующий jQuery, который присваивает значениеDistrictID как только открывается модальное окно:

<script type="text/javascript">

    var wasclicked = 0;
    var $this = this;

    $(document).ready(function () {

        document.getElementById("modalbutton").onclick = function () {
            //is AddNew Store button is hitted, this var = 1
            wasclicked = 1;
        };

        $('#modal-action-store').on('hidden.bs.modal', function () {
            //global.wasclicked = 0;
            wasclicked = 0;
            $(this).removeData('bs.modal');
        });

        $('#modal-action-store').on('shown.bs.modal', function (e) {
            console.log($('#DistrictID').length);
            //if wasclicked equals 1 that means we are in the AddNew Store scenario.
            if (wasclicked == 1) {
                //a default value is sent to District dropdownlist
                var items = "<option value='0'>-- Seleccione Distrito --</option>";
                $('#DistrictID').html(items);
            };
        });
    });
</script>

Проблема сейчас в том, что после выполнения этой строки jQuery, значение, которое было присвоеноDistrictID перезаписывается:

  ViewBag.ListofDistrict = ListofDistrict; //"-- PRUEBA --"

И эта строка потеряна:

var items = "<option value='0'>-- Seleccione Distrito --</option>";

Я подозреваю, что информация, поступающая от контроллера, перезаписывает любой результат из jQuery по сравнению с модальным.

После отладки я выделил три разных момента:

Момент 1: впервые мы открываем модальный

Модал еще не открылся, и jQuery выполняетсяПо этой причине он не идентифицируетDistrictIDРезультат действия GET заполняет входные данные модального окна.

Момент 2 - Часть 1. Второй раз мы открываем модальный

На этот раз модальное окно открывается перед выполнением jQuery.DistrictID имеет значение из метода GET, прежде чем мы присвоим значение из jQuery

Момент 2 - Часть 2. Когда назначено значение из jQuery

Значение из jQuery присваиваетсяDistrictIDЭто значение будет перезаписано результатом действия GET

Вопрос:

Может кто-нибудь объяснить или помочь мне понять, что может быть причиной этого? Что еще я могу сделать, чтобы определить причину этого?

Ответы на вопрос(3)

Ваш ответ на вопрос