2017-01-06 2 views
3

В одном из полей модели просмотра я установил минимальную длину в атрибуте аннотации данных ASP.NET MVC.Динамическое изменение валидации ASP.NET MVC в JQuery

[MinLength(5, ErrorMessage = "A minimum of 5 digits is required")] 

На основе выбора выпадающего (который имеет 2 значения), MinLength должен быть обновлен до 10. ClientSideValidation это позволит и так валидации должен отражать изменения, прежде чем он будет размещен обратно к контроллеру.

Попытался изменить атрибут «data-val-minlength-min», используя jQuery на основе выпадающего значения, но это не изменило валидацию.

Любые предложения, пожалуйста.

+0

Атрибут данных html5 для проверки только для проверки на стороне клиента. Атрибут 'MinLength' используется для проверки на стороне сервера (и для генерации атрибута данных html5). –

+0

@ ADreNaLiNe-DJ, Как обновить его до какого-либо другого значения при смене вниз. – sam113

+0

Попробуйте создать собственный атрибут, наследуя 'MinLength', где переданное значение является значением по умолчанию, и когда ваш пользовательский атрибут вызывается проверкой на стороне сервера, вы смотрите в HTTP-запросе, чтобы получить значение, возвращаемое выпадающим списком. Я не знаю, работает ли это, но я хочу попробовать, если у меня возникнет такая необходимость. –

ответ

0

@StephenMuecke дал мне решение мне нужно. Он работает на стороне клиента и сервера по желанию. Я отправляю его как ответ, чтобы следующий человек мог его легко увидеть.

Создайте у вас есть условный атрибут проверки, так что вы получаете как клиент и сервер проверки на стороне - The Complete Guide To Validation In ASP.NET MVC 3 - Part 2

1

Попробуйте этот подход. Это использование RemoteValidations для нескольких полей в модели.

[Remote("CheckForSelectedDropDownLengthMethod","ControllerName",AdditionalFields="SelectedDropDownName",ErrorMessage="The length should be be 10 characters.")] 

public class ControllerName: Controller 
{ 
    public JsonResult CheckForSelectedDropDownLengthMethod(Model yourmodel) 
     { 
       // write your logic to validate the logic here , 
       // Get the selected value of the dropdown, and the field where you want to check the length. 
     } 
} 

Пожалуйста, выполните одно из примера https://www.codeproject.com/Tips/669824/Implementing-Remote-Validation-in-MVC

+0

Это имя, как следует из названия, делает проверку удаленно, поэтому требуется время. У меня есть другие проверки и в моей форме, и поскольку ClientValidation включен, все другие входы будут проверены в ближайшее время. Это выглядит немного странно, когда только один из них занимает некоторое время. У меня есть комментарий от @StephenMuecke. Это похоже на то, что мне нужно. Я уже на полпути через эту реализацию. – sam113

Смежные вопросы