매우 간단한 예제에서 클라이언트 측 유효성 검사를 사용하려고 시도했지만 작동하지 않습니다. 나는 인터넷에서 기존 예제를 시작했다. 여기매우 간단한 예제에서 클라이언트 유효성 검사가 작동하지 않았습니다.
그 것이다 (허용 대답 참조)
http://benjii.me/2010/11/credit-card-validator-attribute-for-asp-net-mvc-3/ 그래서 나는 빈 솔루션에서 시작하고, 가격이보다 큰 것을 확인하고 싶습니다 : ASP .Net MVC 3 unobtrusive custom client validation
기본적으로,이 솔루션이 블로그를 사용 최소.
내 컨트롤러 :
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(MinPriceViewModel model)
{
if (!ModelState.IsValid)
return View(model);
return Content("Thank you very much");
}
}
내보기 모델 :
public class MinPriceViewModel
{
[MinPrice(MinPrice=9.99)]
[Required]
public double Price { get; set; }
}
검증을위한 속성 (클라이언트 & 서버) :
public class MinPriceAttribute : ValidationAttribute, IClientValidatable
{
public double MinPrice { get; set; }
public override bool IsValid(object value)
{
if (value == null)
return true;
var price = Convert.ToDouble(value);
if (price < MinPrice)
{
return false;
}
return true;
}
public override string FormatErrorMessage(string name)
{
return "Attention le champ " + name + " ne contient pas un prix acceptable.";
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationRule
{
ErrorMessage = this.ErrorMessage,
ValidationType = "minprice"
};
}
}
뷰 :
@model MinPriceValidation.Models.MinPriceViewModel
@{
ViewBag.Title = "Home Page";
}
<script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
jQuery.validator.unobtrusive.adapters.addBool('minprice');
});
</script>
@using(Html.BeginForm())
{
@Html.LabelFor(m => m.Price)
@Html.TextBoxFor(m => m.Price)
@Html.ValidationMessageFor(m => m.Price)
<input type = submit />
}
내 컨트롤러의 게시물 작업에 중단 점을 배치하여 클라이언트 또는 서버 유효성 검사가 발생했는지 확인합니다. 솔루션을 실행하고 1을 입력하고 제출하면 내 컨트롤러에서 중단 점에 도달했습니다 (조치 후) >> 나는 클라이언트 검증이 사용되지 않는다고 결론을 내 렸습니다.
기본 예제 (신용 카드 유효성 검사)에서 시작하여이 신용 카드 유효성 검사가 클라이언트 유효성 검사 (다른 솔루션에서 테스트 됨)에서 작동하기 때문에 이해가되지 않습니다.
나는 조금 길다.
클라이언트 유효성 검사가 작동하지 않는 이유는 무엇입니까?
감사합니다.
jQuery.validator.addMethod("minprice", function (value, element, param) {
// Perform tests here for client validation
return (value>10);
});
jQuery.validator.unobtrusive.adapters.addBool('minprice');
나는이 추가 된 테스트 :
UPDATE
많이 인터넷 검색 후, 나는 어떤 사람들은 우리가이 같은 클라이언트 유효성 검사를위한 자바 스크립트 기능을 필요로 말한다 볼 자바 스크립트 기능을 작동하지만 그것은 나에게 이상한 것 크레타 카드 예제 신용 카드를 확인하기위한보기에서 자바 스크립트 기능이 없어!
아직 분실 상태입니다.
Yuo가 맞습니다. 나는 몰랐다. 감사합니다. – Bronzato
작동하지만 최저 가격이 변경되면 프로그래머가 코드를 변경해야합니다. 이것은 마케팅 규칙이며 애플리케이션의 재 구축/재배포없이 프로그래머가 아닌 사람들이 동적으로 변경해야합니다. – RickAndMSFT