В одном из сценариев, которые у меня есть, необходимо выполнить удаленную проверку, чтобы убедиться, что поле не вводится повторно.Ручная удаленная проверка в ASP.NET MVC 3
Это может быть сделано с помощью удаленного Validation ASP.NET MVC 3, однако, это работает отлично в форме, которая используется для CREATE запись, не в той форме, которая используется для EDIT записи, или иначе, это всегда даст мне ошибку, что запись уже присутствует.
Итак, что мне нужно для этой формы Редактировать форму отправки столбцов Id/Name для проверки наличия другой записи с тем же именем, другими словами, есть ли у меня какая-либо другая запись, отличная от той, у которой есть ID, такое же «Имя»?
Работа на стороне сервера работает отлично, проблема заключается в том, что jQuery отображает ошибку внутри диалогового окна JQuery UI. Я следовал так же, как и jquery.validate.unobstrusive.js.
На самом View, я бегу следующие функции
$(document).ready(function() { RemoteValidate({ formName: "CultureEditForm", inputName: "Name", inputId: "CultureId", url: "/Culture/CultureEditNameExists", dupTmpl: "dupTmpl" }); });
The RemoteValidate() следующим образом:
RemoteValidate = function (options) { $('#' + options.formName + ' input[name=\"' + options.inputName + '\"]').live('blur', function() { var params = { name: $('#' + options.formName + ' input[name=\"' + options.inputName + '\"]').val(), id: $('#' + options.formName + ' input[id$=\"' + options.inputId + '\"]').val() } $.ajax({ url: options.url, type: "POST", data: JSON.stringify(params, null, 2), contentType: "application/json; charset=utf8", dataType: "json", success: function (response) { if (!response) { _onError(options.formName, options.inputName); } else { _onSuccess(options.formName, options.inputName); } } }); }); function _onError(formId, inputElement) { var container = $('#' + formId).find("[data-valmsg-for='" + inputElement + "']"), replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false; container.removeClass("field-validation-valid").addClass("field-validation-error"); if (replace) { container.empty(); $('Name already exists').appendTo(container); } } function _onSuccess(formId, inputElement) { var container = $('#' + formId).find("[data-valmsg-for='" + inputElement + "']"), replace = $.parseJSON(container.attr("data-valmsg-replace")); if (container) { container.addClass("field-validation-valid").removeClass("field-validation-error"); if (replace) { container.empty(); } } } }
Пока диалоговое окно открыто, я продолжаю пытаться значения, и он работает с сообщением об ошибке «show/hide».
Однако, когда я закрываю диалоговое окно, а затем нажимаю на другую запись для редактирования, он снова открывает диалоговое окно с новыми значениями, однако, когда он пытается отправить серверу запрос на проверку, существует ли запись в базе данных, ОТПРАВКА ОТЧЕТА ДАННЫЕ ПРЕДЫДУЩЕЙ ЗАПИСИ, КОТОРЫЕ БЫЛИ ИЗОБРАЖЕНЫ
Я выделил выделенную выше строку, которая подготавливает объект для отправки на сервер.
Любая помощь?
Благодаря