Элемент с тем же ключом уже добавлен - AJAX - jQuery - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь удалить запись из списка записей.раньше это работало нормально.Теперь, когда я нажимаю «Удалить» в функции ajax, выдается исключение «Элемент с таким же ключом уже добавлен».

Я попробовал некоторые варианты из уже заданных и отвеченных вопросов по этой теме, но я не могурешить мою проблему.я не могу выяснить, где в моем коде есть любое повторяющееся имя или любая другая дублирующаяся сущность / переменная.

HTML


 <td>
    <div class="hidden-phone visible-desktop btn-group">
        <a href="@Url.Content("~/backend/Car/UpdateUsedCar/")@CryptoProvider.Encrypt(Car.Id)" class="btn btn-mini btn-info" title="Edit Car"><i class="icon-edit"></i></a>
        @*<a href="@Url.Content("~/backend/Car/UsedCarDetails/")@CryptoProvider.Encrypt(Car.Id)" class="btn btn-mini btn-info" title="Details Car"><i class="icon-play"></i></a>*@
        <a href="@Url.Content("~/backend/Car/DeleteUsed/")@CryptoProvider.Encrypt(Car.Id)" onclick='javascript:return deleteConfirmation(this);' class='btn btn-mini btn-danger' title="Delete Car"><i class="icon-trash"></i></a>
        <a class="invisible" href="@Url.Content("~/backend/Car/DisableCar/")@CryptoProvider.Encrypt(Car.Id)" onclick='javascript:return deleteConfirmation(this);' class='btn btn-mini btn-danger' title="Restore Car"><i class="icon-ok"></i></a>
    </div>
    <div class="hidden-desktop visible-phone">
        <div class="inline position-relative">
            <button class="btn btn-minier btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-caret-down icon-only"></i></button>
            <ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
                <li><a href="@Url.Content("~/backend/Car/UpdateUsedCar/")@CryptoProvider.Encrypt(Car.Id)" class="tooltip-success" data-rel="tooltip" title="Edit Car" data-placement="left"><span class="green"><i class="icon-edit"></i></span></a></li>
                @*<li><a href="@Url.Content("~/backend/Car/UsedCarDetails/")@CryptoProvider.Encrypt(Car.Id)" class="tooltip-success" data-rel="tooltip" title="Details Car" data-placement="left"><span class="green"><i class="icon-play"></i></span></a></li>*@
                <li><a href="@Url.Content("~/backend/Car/DeleteUsed/")@CryptoProvider.Encrypt(Car.Id)" onclick='javascript:return deleteConfirmation(this);' class='tooltip-error' data-rel="tooltip" title="Delete Car" data-placement="left"><span class="red"><i class="icon-trash"></i></span></a></li>
                <li class="invisible"><a href="@Url.Content("~/backend/Car/DisableCar/")@CryptoProvider.Encrypt(Car.Id)" onclick='javascript:return deleteConfirmation(this);' class='tooltip-error' data-rel="tooltip" title="Restore Car" data-placement="left"><span class="red"><i class="icon-ok"></i></span></a></li>

            </ul>
        </div>
    </div>
</td>

Функции Jquery для подтверждения удаления

function deleteConfirmation(link) {
    debugger;
    var index = $(link).parent().parent().parent().index();

    $('.deleteThisRecord').removeClass('deleteThisRecord'); // Unselect All
    $(link).addClass('deleteThisRecord');

    var message = GetMessageBox(confirmHeading, deleteMessage, true);
    $('#dataConfirmModal').remove();
    $('body').append(message);
    //if (!$('#dataConfirmModal').length) {
    //    $('body').append(message);
    //}
    $('#dataConfirmModal').find('.modal-body').text($(link).attr('data-confirm'));
    $('#dataConfirmOK').attr('onclick', 'javascript:ajaxDeletion(' + index + ');');
    $('#dataConfirmModal').modal({ show: true });
    return false;
}

function ajaxDeletion(pos) {
    debugger;
    //var url = $('tbody').children('tr').eq(pos).find('.icon-trash').parent().attr('href');
    //var ico = $('tbody').children('tr').eq(pos).find('.icon-trash');
    //var tr = $('tbody').children('tr').eq(pos);
    //var row = $(ico).closest('tr');
    var url = $('.deleteThisRecord').attr('href');
    var row = $('.deleteThisRecord').parents('tr').eq(0);
    var nRow = row[0];
    $.ajax({
        url: url,
        type: "POST",
        dataType: "json",
        success: function (data, status) {
            debugger;
            if (data.status == 'success') {
                //oTable.fnDeleteRow(pos);
                //var table1 = $('tbody').parent();
                //alert(tabl1);
                //table1.deleteRow(pos);
                //while (table && table.tagName != 'TABLE')
                //    table = table.parentNode;
                //if (!table)
                //    return;
                //table.deleteRow(row.rowIndex);
                oTable.fnDeleteRow(nRow);
                $('#dataConfirmLabel').html(successHeading);
                $('.modal-body').html(data.message);
                VerifyTable();

            } else {
                debugger;
                $('#dataConfirmLabel').html(failedHeading);
                $('.modal-body').html(data.message);
            }

            debugger;
            $('#btnDialogCancel').hide();
            $('#dataConfirmOK').attr('onclick', '');
            $('#dataConfirmOK').attr('onclick', "$('.close').click();");

        },
        error: function (data, status) {
            debugger;
            //console.log(data);
            //alert(" Can't do because: " + error);
        }
    });
    return false;
}

Функция в контроллере

 public ActionResult DeleteUsed(KapCarViewModel model)
        {
delete record
}

Функция дешифрования зашифрованного значения из внешнего интерфейса

public bool ContainsPrefix(string prefix) {
            try {
                if (_routeData.Values[prefix] == null || !prefix.ToLower().Equals("id") || _id > 0 || Convert.ToString(_routeData.Values["controller"]) == "Home" ) {
                    return false;
                }
                _routeData.Values[prefix] = CryptoProvider.Decrypt(_routeData.Values[prefix].ToString());
                _id = Convert.ToInt32(_routeData.Values[prefix]);
                return true;
            }
            catch (Exception)
            {
                throw new Exception("Invalid request found.");
            }
            return false;
        } 

Просмотр модуля для получения / установки значений

public class KapCarViewModel : BaseViewModel
    {
        public int Id { get; set; }
        public string EncryptedId { get; set; }
    }

Мне нужно удалить запись после подтверждения пользователя «ОК» из диалогового окна.но «Элемент с тем же ключом уже добавлен».эта ошибка не позволяет мне сделать это.я не делал этот код с нуля, но раньше он работал нормально.вдруг это перестало работать.Пожалуйста, помогите мне в решении этой проблемы.Примечание: когда этот код переходит от внешнего интерфейса для расшифровки значения идентификатора записи.функция дешифрования затем получает доступ к модели представления, где она выдает ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...