매개 변수가있는 ASP.NET MVC 3 클라이언트 쪽 유효성 검사
이 게시물에 이어 사용자 지정 속성에 대한 클라이언트 측 유효성 검사 수행
클라이언트 측 스크립트에 추가 매개 변수를 전달하여이 작업을 수행하는 방법에 대해 알아 보려고합니다.
지금까지 MVC 3으로 사용자 지정 유효성 검사를 구현하려면 다음이 필요합니다.
사용자 지정 유효성 검사 속성 만들기
ValidationAttribute 및 IClientValidatable 구현을 기반으로합니다. 또한 ValidationAttribute 및 IClientValidatable의 기능을 모두 구현하는 것으로 보이는 ModelValidator에서 파생 된 몇 가지 예제를 보았습니다. 그래서 이것이 차이점이 무엇인지 또는 ModelValidator가 MVC 2에서 사용되었는지 여부에 대한 첫 번째 혼란의 지점입니다.
ModelClientValidationRule의 인스턴스는 오류 메시지, ValidationType (클라이언트 측 유효성 검사를 수행 할 자바 스크립트 함수의 이름으로 이해 됨) 및 속성에 추가 된 사용자 지정 매개 변수와 같은 세부 정보를 지정하기 위해 GetClientValidationRules ()에서 반환되어야합니다. 있을 수 있으며 Javascript 유효성 검사에 전달되어야합니다.
런타임 (어떤 부분인지 확실하지 않음)이 다음 ModelClientValidationRule
과 같이 태그 요소에 html 속성을 생성 하는 데 사용한다고 가정 합니다.
data-val="true" (to indicate that the element requires validation)
data-val-[ValidationType]=[ErrorMessage]
data-val-[ValidationType].[ValidationParameters(n).Key]=[ValidationParameters(n).Value]
클라이언트 측 유효성 검사 논리 구현
자바 스크립트 함수를 생성하고 jQuery.validators.addmethod ()를 사용하여 jQuery.validators에 추가해야 JQuery가 실행해야 할 때이를 인식 할 수 있습니다. 다음과 같은 것 :
jQuery.validator.addMethod(
'greaterThan',
function (value, element, params) {
/.../
return /* true or false */ ;
},
''
);
여기에서 내 질문은 '함수 (값, 요소, 매개 변수)'서명이 유효성 검사를 처리 할 메서드의 표준인지 여부이며 양식이 제출되기 전이나 양식이 제출 될 때와 같은 적절한 시간에 일부 jQuery 기능에 의해 호출 될 것이라고 가정합니다. 요소는 fuces 또는 keyUp 이벤트를 잃습니다. 나는 당신이 이것을 제어 할 수있는 방법을 이해하지 않는다. 즉, 어떤 이벤트가 사용자 정의 검증에 적합한 지 선택한다.
눈에 잘 띄지 않는 어댑터 구현
이것은 눈에 거슬리지 않는 속성을 다음과 같이 변환합니다. 나는 그다지 명확하지 않지만 jQuery 규칙이라고 가정하지만 그 작동 방식에 대해서는 명확하지 않습니다. 같은 것
jQuery.validator.unobtrusive.adapters.add(
'futuredate',
{ },
function (options) {
options.rules['greaterThan'] = true;
options.messages['greaterThan'] = options.message;
}
);
여기 내 질문은 '기능 (옵션)'에 관한 것입니다. 이것이 '함수 (값, 요소, 매개 변수)'전에 호출 될 함수이며 눈에 거슬리지 않는 태그를 jQuery.Validation에서 이해할 수있는 데이터 구조로 추출하는 역할을합니다. 코드 예제에서 옵션은 태그의 속성 값 (예 : options.message)과 매핑해야하는 jQuery 관련 속성 (예 : options.messages [ 'ClientSideValidationFunctionName'])을 모두 포함하는 객체 인 것 같습니다. . 그렇다면 맞춤 매개 변수를 검색하고 매핑하는 방법입니다.
추가 혼란을 추가하지 않았기를 바랍니다.
ValidationParameters
속성을 사용 하여 규칙에 사용자 지정 매개 변수를 추가 할 수 있습니다 .
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = this.ErrorMessage,
ValidationType = "futuredate",
};
rule.ValidationParameters.Add("param1", "value1");
rule.ValidationParameters.Add("param2", "value2");
yield return rule;
}
어댑터에서 사용할 수 있습니다.
jQuery.validator.unobtrusive.adapters.add(
'futuredate',
[ 'param1', 'param2' ],
function (options) {
var param1 = options.params.param1; // shall equal 'value1'
var param2 = options.params.param2; // shall equal 'value2'
// TODO: use those custom parameters to define the client rules
}
);
최신 정보:
As requested in the comments section here's how you could pass those parameters to the custom validator rule function:
jQuery.validator.unobtrusive.adapters.add(
'futuredate',
[ 'param1', 'param2' ],
function (options) {
// simply pass the options.params here
options.rules['greaterThan'] = options.params;
options.messages['greaterThan'] = options.message;
}
);
jQuery.validator.addMethod('greaterThan', function (value, element, params) {
// params here will equal { param1: 'value1', param2: 'value2' }
return ...
}, '');
ReferenceURL : https://stackoverflow.com/questions/4784943/asp-net-mvc-3-client-side-validation-with-parameters
'programing' 카테고리의 다른 글
Eclipse의 유효한 HTML5 속성에 대한 경고 (0) | 2021.01.15 |
---|---|
XML 구문 분석보다 JSON 구문 분석이 더 빠릅니다. (0) | 2021.01.15 |
.net 응용 프로그램에서 SQL Server 시간 데이터 형식을 사용하는 방법은 무엇입니까? (0) | 2021.01.15 |
Android 데이터베이스를 온라인 SQL Server와 동기화하는 방법은 무엇입니까? (0) | 2021.01.15 |
재귀 적으로 scp를 사용하지만 일부 폴더는 제외 (0) | 2021.01.15 |