Проблемы проверки состояния модели asp.NET MVC - PullRequest
0 голосов
/ 16 июля 2009

У меня проблемы с добавлением методов проверки к нескольким элементам управления в моем приложении MVC. Я использую следующее для проверки формата мм / дд / гггг:

if (!Regex.IsMatch(candidateToEdit.availability.StartDate.ToShortDateString(), @"giantregex"))
            ModelState.AddModelError("availability_StartDate", "Start date must be in the mm/dd/yyyy format.");
//giantregex is a giant regular expression omitted for clarity

На мой взгляд, у меня есть:

<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>

<%= Html.ValidationMessage("availability_StartDate", "*")%>

По какой-либо причине текст ошибки не отображается, он подтверждает, что произошла ошибка, и создается список начала, но «Дата начала должна быть в формате мм / дд / гггг» не отображается Подтверждает, правильно ли вы указали дату.

Ответы [ 3 ]

3 голосов
/ 16 июля 2009

Я думаю, что проблема здесь в том, что вы проверяете фактический тип DateTime с помощью регулярного выражения. Поскольку они ввели неверный формат даты и времени в текстовом поле, он фактически никогда не анализируется в фактическом DateTime, где для него может быть вызван ToShortDateString (). Поэтому проверка вашего регулярного выражения никогда не происходит.

Вам нужно будет принять шаблон ViewModel, в котором все потенциальные проблемы с синтаксическим анализом выявляются в первую очередь как строки (например ,андидат_diteViewModel.AvailabilityStartDateString ") или реализует проверку на стороне клиента и программируете защитно.

0 голосов
/ 16 июля 2009

Образец, который вы дали, работает в моем тестовом проекте. Можете ли вы попытаться воспроизвести ошибку в только что созданном проекте?

0 голосов
/ 16 июля 2009

Я думаю, что вам нужно включить резюме проверки, чтобы получить сообщение

<%= Html.ValidationSummary() %>

РЕДАКТИРОВАТЬ: попробуйте поставить "." вместо "_" в качестве имени вашего свойства в вызове AddModelError, например:

Вместо:

ModelState.AddModelError("availability_StartDate", "Start date must be...");

попробуйте это:

ModelState.AddModelError("availability.StartDate", "Start date must be...");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...