Jquery Автозаполнение не заполняется после появления ошибки

#javascript #jquery #asp.net-mvc

Вопрос:

Я управляю ASP.Net Приложение MVC и использование автозаполнения jQuery в одном из текстовых полей для заполнения номеров контрактов после 6-й цифры/символа.

Он работает безупречно до тех пор, пока не будет выдана ошибка для проверки подлинности.

Мой код :

 $(document).ready(function () {
        $("#ContractNumber").autocomplete({
            source: '@Url.Action("GetContractId")',
            open: function () { $('ul.ui-autocomplete').hide().fadeIn() },
            close: function () { $('ul.ui-autocomplete').show().fadeOut() },
            minLength:6
        });
});
 

Код, который перенаправляет на правильный контроллер для получения номера контракта, находится здесь:

  $(document).ready(function () {
        //$('body').on('focus', "#ContractNumber", function () {
          $("#ContractNumber").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/PurchaseRequestDetail/GetContractId",
                    minLength: 1,
                    data: { Prefix: request.term },
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item.Name, value: item.Name };;
                        }))
                    }
                })
            }
          });
 

Вот автозаполнение, которое работает нормально, до ошибки:

введите описание изображения здесь

Я хотел, чтобы это автозаполнение работало в фокусе текстового поля, независимо от того, произошла ошибка проверки или нет.

ошибка проверки: введите описание изображения здесь

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

 if (contractNo is null)
                {
                    // row.ContractId = foundList.ContractId;
                    db.PurchaseRequestDetail.Add(newRow);
                    db.SaveChanges();
                }
else if (contractNo != null)
                {
                    if (foundList is null)
                    {
                        ModelState.AddModelError("ContractNumber", "Contract Number not in the database.");

                        // reload the drop down lists, they don't survive the trip to the server and back
                        viewModel.ContractList = GetContractList(viewModel.ContractId);

                        return View("CreateEdit", viewModel);
                    }
                }
 

Любые указания по исправлению этого были бы полезны.

ТИА.

Комментарии:

1. Можете ли вы также показать ошибку проверки, которую вы получаете. Это может внести дополнительную ясность.

2. обновил сообщение с ошибкой проверки, пожалуйста, проверьте @mukhtar alam

3. Спасибо, что показали ошибку проверки, можете ли вы также показать код, который ее генерирует?

4. @Kinglish, обновил сообщение кодом для modelstate

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