Только в IE, когда всплывающее окно открывается во второй раз, метод контроллера не вызывается для перезагрузки данных для всплывающего окна.

Я обновляю данные через всплывающее окно.

Данные обновляются, и затем при повторном открытии всплывающего окна текстовое поле по-прежнему имеет то же значение, которое было до обновления.

Я открываю всплывающее окно, нажимая на кнопку, определенную как следующее в ItemDetail.cshtml

   @Html.ActionLink("Create New Item", "OpenNewItem", "ItemDetail", new
   {
       itemId = Model.Item.ItemId
   }, new { @class = "modal-link k-button k-primary", onclick = "$('#UserID_validationMessage').css('display', 'none');$('#newAmount_validationMessage').css('display', 'none')" })

ItemDetailконтроллер имеет метод, который вызывается при нажатии OpenNewItem:

public ActionResult OpenNewItem(int ItemId)
{
    var model = new ItemDetailViewModel();

    SetUpViewData();

    if (itemId > 0)
    {
        var item= ItemModel.GetItemByID(itemId);

        model.NewTicket = item;

        model.Item = item;
    }

    model.NewTicket.TicketAction = "New";

    return PartialView("_NewTicketModal", model);
} 

_NewTicketModal частичное представление имеет следующее определение:

@using (Ajax.BeginForm("Create", "ItemDetail",
    new AjaxOptions
    {
        HttpMethod = "POST",
        LoadingElementId = "loader",
        UpdateTargetId = "newTicket",
        InsertionMode = InsertionMode.Replace,
        OnComplete = "onRequestComplete",
        OnFailure = "CheckError" 

    }, new { id = "CreateItemForm" }))
{

    <div class="modal-body">

        <div id="newTicket">
                @Html.Partial("_CreateNewItem", Model)
            </div>
    </div>
}

Загружает _CreateNewTicket частичное представление, которое представляет всплывающее окно. Это всплывающее окно имеет Create кнопка. При нажатии данные обновляются с учетом количества нового элемента.

Когда запрос ajax завершен, onRequestComplete определяется в _CreateNewTicket view вызывается для обработки всего остального: отображение подтверждения и очистка данных в модальном всплывающем окне:

<script>
    function onRequestComplete() {
        var message = '@Model.NewItem.Message';

        $("#dialog").kendoDialog({
            width: "400px",
            title: "System Message",
            closable: true,
            modal: true,
            content: "<div style='text-align: center'>" + message + "</div>",
            actions: [
                {
                    text: 'OK',
                    action: function (e) {
                        onClose();
                    },
                    primary: true
                }
            ]
        }).data("kendoDialog").open();
    }

    function onClose() {
        if ($('.modal #NewItem_ItemId').length > 0) {
            var ticketId = $('.modal #NewItem_ItemId').val();
            var success = $('.modal #NewItem_Success').val();
            if (success == 'True') {
                $('.modal-content').html('');
                $('#modal-container').modal('hide');

                window.location.href = "/NewItemDetail/Index/" + itemId;
            }
        }
    }
</script>

Все работает нормально Chrome а также FirefoxОднако в IE при открытии всплывающего окна во второй раз, метод контроллера не вызывается, и данные, отображаемые во всплывающем окне, являются старыми данными, даже если данные были обновлены.

Я просмотрел некоторые ответы, и одним из решений было очистить данные из окна модели. Тем не менее, я делаю это в моем onClose() метод.

Что мне здесь не хватает?

0 ответов

Другие вопросы по тегам