2015-11-20 2 views
0

У меня есть страница сброса пароля, который выглядит как этотДобавить одно сообщение проверки для нескольких полеев

enter image description here

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

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

enter image description here

Как я могу добавить одно сообщение проверки для двух полей?

Я попробовал этот

ModelState.AddModelError(newpasswordfieldname, ""); 
ModelState.AddModelError(confirmpasswordfieldname, AccountResources.FailMinPasswordHistory); 

но отображается сообщение об ошибке "Значение password является недействительным." для нового поля пароля.

Есть ли способ достичь этого, кроме использования TempData/ViewData, т.е. используя собственный SDK для проверки формы?

+0

Если я правильно понимаю ваш вопрос вам просто нужно сравнить новый пароль и недавнюю операцию. как насчет поля comparevalidator? im not sure in asp.netMVC –

+0

Рабочий процесс проверки корректен, единственная проблема, с которой я сталкиваюсь, отображает результат проверки – rjv

+0

Я вижу, почему бы не использовать jquery? Я использую его для управления css из кода, за исключением того, что я еще не знаком с MVC. –

ответ

0

Поскольку я не нашел решения, использующего SDK для проверки правильности MVC, я был вынужден использовать грязное обходное решение.

В мой контроллер

ModelState.AddModelError(newpasswordfieldname, "DONOTSHOW"); 
ModelState.AddModelError(confirmpasswordfieldname, AccountResources.FailMinPasswordAge); 

И на мой взгляд

@if(ViewData.ModelState["NewPassword"]!=null && 
    ViewData.ModelState["NewPassword"].Errors.First().ErrorMessage!="DONOTSHOW") 
{ 
    @Html.ValidationMessageFor(model => model.NewPassword) 
} 
0

Вы пытались использовать перегруженность AddModelError(String, String)?

ModelState.AddModelError(newpasswordfieldname, "This password was used too recently"); 
ModelState.AddModelError(confirmpasswordfieldname, "This password was used too recently"); 

Добавьте одно и то же сообщение к обоим свойствам.

+0

Это отобразит сообщение дважды. И FYI, я использую перегрузку строки. – rjv

+0

Ох, хорошо. В этом случае, возможно, самым простым было бы добавить с jQuery класс «has-error» или аналогично поле ввода. Вы можете либо переслать переменную bool, чтобы узнать, нужно ли ее использовать, либо заставить ее зависеть от сообщения об ошибке подтверждения пароля. – DDan

+0

Или если сообщение проверки, если оно совпадает с другим, установлено для отображения: none. или любой из этих трюков. – DDan

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