[JQUERY] 사용자 지정 특성에 대한 클라이언트 측 유효성 검사를 수행
JQUERY사용자 지정 특성에 대한 클라이언트 측 유효성 검사를 수행
해결법
-
1.여기에 진행 방법은 다음과 같습니다
여기에 진행 방법은 다음과 같습니다
사용자 지정 유효성 검사 속성을 정의하여 시작합니다 :
public class FutureDateAttribute : ValidationAttribute, IClientValidatable { public override bool IsValid(object value) { if (value == null || (DateTime)value < DateTime.Now) return false; return true; } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { yield return new ModelClientValidationRule { ErrorMessage = this.ErrorMessage, ValidationType = "futuredate" }; } }
이 IClientValidatable을 구현하는 방법을 알 수 있습니다. 우리가 우리의 모델을 쓰기 다음 :
public class MyViewModel { [FutureDate(ErrorMessage = "Should be in the future")] public DateTime Date { get; set; } }
그런 다음 컨트롤러 :
public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel { // intentionally put in the past Date = DateTime.Now.AddDays(-1) }); } [HttpPost] public ActionResult Index(MyViewModel model) { return View(model); } }
그리고 마지막으로보기 :
@using (Html.BeginForm()) { @Html.LabelFor(x => x.Date) @Html.TextBoxFor(x => x.Date) @Html.ValidationMessageFor(x => x.Date) <input type="submit" value="OK" /> }
일어날 수있는 마법의 마지막 부분은 사용자 정의 어댑터를 정의하는 것입니다 :
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> <script type="text/javascript"> // we add a custom jquery validation method jQuery.validator.addMethod('greaterThan', function (value, element, params) { if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) > new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (parseFloat(value) > parseFloat($(params).val())); }, ''); // and an unobtrusive adapter jQuery.validator.unobtrusive.adapters.add('futuredate', { }, function (options) { options.rules['greaterThan'] = true; options.messages['greaterThan'] = options.message; }); </script>
-
2.귀하의 질문은 질문 이후하면서 조금을했다,하지만 경우 여전히 메타 데이터와 같은, 당신은 당신이 다음과 같은 주석을 사용하여 문제를 해결할 수, 여전히 단순화 대안 열려있어 :
귀하의 질문은 질문 이후하면서 조금을했다,하지만 경우 여전히 메타 데이터와 같은, 당신은 당신이 다음과 같은 주석을 사용하여 문제를 해결할 수, 여전히 단순화 대안 열려있어 :
[Required] [AssertThat("Date > Now()")] public DateTime? Date { get; set; }
상자의 서버와 클라이언트, 아웃 - 그것은 모두를 위해 작동합니다. 자세한 내용 ExpressiveAnnotations 라이브러리를보십시오.
from https://stackoverflow.com/questions/4747184/perform-client-side-validation-for-custom-attribute by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 라디오 버튼의 선택을 취소합니다? (0) | 2020.10.15 |
---|---|
[JQUERY] jQuery를에 사용자 정의 이벤트? (0) | 2020.10.15 |
[JQUERY] 배열 자바 스크립트 / jQuery를 특정 문자열을 포함하는 경우 어떻게 찾아 낼 수 있을까요? [복제] (0) | 2020.10.15 |
[JQUERY] jQuery를 사용하여 배열에서 특정 값을 제거하는 방법 (0) | 2020.10.15 |
[JQUERY] 사용자 정의 데이터에의 jQuery 셀렉터는 HTML5를 사용하여 속성 (0) | 2020.10.15 |