具有ivalidatableobject的ASP.NET MVC自定义客户端模型验证(比较两个int值)

时间:2018-09-05 22:35:54

标签: validation asp.net-core-mvc data-annotations customvalidator ivalidatableobject

我有自定义验证,可以比较模型中的两个值。服务器端验证正常运行。

但是,我想知道我需要添加什么才能使自定义模型验证在客户端工作(即,在按下“提交”按钮之前显示红色的小错误消息)。现在,我的红色小错误消息仅在按下“提交”按钮后出现。

以下是相关代码的简化版本:

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库已正确设置)。

0 个答案:

没有答案