내가 가진 시나리오 중 하나에서 필드가 다시 입력되지 않도록 원격 유효성 검사를 수행해야합니다.ASP.NET MVC 3의 수동 원격 유효성 검사
이것은 ASP.NET MVC 3 원격 검증을 사용하여 수행 할 수그러나, 이것은하지 편집 기록에 사용되는 형태로,에게 레코드를 생성 에 사용되는 형태로 완벽하게 작동 그렇지 않으면 레코드가 이미 존재한다는 오류가 항상 발생합니다.
그래서이 편집 양식에 필요한 것은 ID/이름 열을 보내어 같은 이름의 다른 레코드의 존재를 확인합니다. 즉, 'ID가 아닌 다른 레코드'가 있습니까? 같은 "이름"?
서버 측 로직이 완벽하게 작동합니다. 문제는 jQuery UI 대화 상자에서 오류를 표시하는 것입니다. 나는 jquery.validate.unobstrusive.js와 같은 방법을 사용했다. 다음과 같이
$(document).ready(function() { RemoteValidate({ formName: "CultureEditForm", inputName: "Name", inputId: "CultureId", url: "/Culture/CultureEditNameExists", dupTmpl: "dupTmpl" }); });
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(); } } } }는
은 긴 대화 창이 열려, 나는 노력을 계속보기 자체에
, 나는 다음을 실행하고 값을 가져오고 "표시/숨기기"오류 메시지가 작동합니다.그러나 대화 상자를 닫은 다음 편집 할 다른 레코드를 클릭하면 새 값으로 대화 상자가 다시 열립니다. 단, 서버에 레코드가 데이터베이스에 있는지 확인하는 요청을 보내려고하면 IT 보낸 사람 이전에 편집 한 레코드의 데이터
위의 굵은 글씨체는 서버로 보낼 개체를 준비합니다.
어떤 도움이 필요합니까?
감사합니다.