Member 11859517 Ответов: 2

Как сделать проверку текстового поля (сравнить значение текстового поля) в MVC?


Привет,

Я хочу сделать проверку для текстовых полей,
В моей модели у меня есть два свойства скажем

[Required]
public int StartRange {get; set;}
[Required]
public int EndRange {get; set;}


На мой взгляд

@Html.LabelFor(m => m.SignalStartRange, new { @class = "labelColor" }):
@Html.TextBoxFor(m => m.SignalStartRange, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.SignalStartRange, "", new { @class = "text-danger"})

@Html.LabelFor(m => m.SignalEndRange, new { @class = "labelColor" }) :
@Html.TextBoxFor(m => m.SignalEndRange, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.SignalEndRange, "", new { @class = "text-danger" })


Я должен сделать проверку того, что EndRange не должен быть меньше StartRange.

Пожалуйста, кто-нибудь, помогите мне, как это сделать.

Что я уже пробовал:

Я проверял любой атрибут аннотации данных, который будет сравнивать числа.

2 Ответов

Рейтинг:
8

Member 11859517

Я нашел решение, здесь я создал свой пользовательский атрибут, [GreaterThan]

[Required(ErrorMessage = "Signal Start Range Field Is Mandatory.")]  
        [DisplayName("Signal Start Range")]
        public string SignalStartRange { get; set; }

[Required(ErrorMessage = "Signal End Range Field Is Mandatory.")]
        [DisplayName("Signal End Range")]
        [GreaterThan(PropName = "SignalStartRange", ErrorMessage ="End rand should not be lesser than start ragne")]
        public string SignalEndRange { get; set; }



public class GreaterThanAttribute: ValidationAttribute
    {
        public string PropName { get; set; }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            PropertyInfo otherPropertyInfo = validationContext.ObjectType.GetProperty(PropName);

            var otherPropertyStringValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance, null).ToString();

            if(Convert.ToUInt32(value) < Convert.ToUInt32(otherPropertyStringValue))
            {
                return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
            }
            return null;
        }
    }


Рейтинг:
0

Graeme_Grant

Вам нужно выполнить проверку на стороне клиента с помощью javascript или jquery. Вот пример со слайдером: Asp.Net MVC 5 с jQuery slider | The ASP.NET форумы[^] а вот ползунок двойного диапазона jquery: jQRangeSlider: плагин jQuery для ползунков диапазона[^]

Создать рабочее решение из приведенных выше ссылок не составит труда.


Member 11859517

спасибо, это имеет отношение к моему вопросу?
мне нужно сравнение двух целочисленных текстовых полей. последнее не должно быть меньше первого.

Graeme_Grant

Я рекомендовал альтернативу, вот и все.

Но если вы хотите использовать только ввод текста, то вам нужно выполнить пользовательскую проверку на стороне клиента с помощью javascript или jquery, а не на стороне сервера аннотаций данных.