Проверка клиентской модели ASP.NET MVC на стороне клиента (сравнение двух значений int) с объектом ivalidatableable - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть пользовательская проверка, сравнивающая два значения в моей модели. Проверка на стороне сервера работает правильно.

Однако мне интересно, что мне нужно добавить, чтобы пользовательская проверка модели работала на стороне клиента (т. Е. Показать маленькие красные сообщения об ошибках до нажатия кнопки отправки). Прямо сейчас мое маленькое красное сообщение об ошибке появляется только после нажатия кнопки отправки.

Упрощенная версия соответствующего кода включена ниже:

В файле 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 настроены правильно).

...