我有自定义验证,可以比较模型中的两个值。服务器端验证正常运行。
但是,我想知道我需要添加什么才能使自定义模型验证在客户端工作(即,在按下“提交”按钮之前显示红色的小错误消息)。现在,我的红色小错误消息仅在按下“提交”按钮后出现。
以下是相关代码的简化版本:
在viewmodel.cs
文件中:
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections.Generic;
public class MyViewModel : IValidatableObject
{
public int value1 { get; set; }
[Range(0, 1000, ErrorMessage = "Must be a positive integer between 0 and 1000")]
public int value2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (value2 > value1)
yield return new ValidationResult("value2 cannot be more than value1).", new List<string> { "value1" });
}
}
在cshtml视图中:
<input asp-for="value1" />
<p style="color:red"><span asp-validation-for="value1"></span> </p>
<input asp-for="value2" />
<p style="color:red"><span asp-validation-for="value2"></span> </p>
发布表单后,我检查了控制器内部的'ModelState.IsValid'。
包含'jquery.validate.min.js'和'jquery.validate.unobtrusive.min.js'(并且客户端范围验证正常工作,因此我知道jquery库已正确设置)。