#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 заключается в отключении элемента автозаполнения ввода. Я бы рассмотрел другой способ отображения сообщения об ошибке таким образом, чтобы не прерывать элемент формы.