MVC 3 Razor - ненавязчивая проверка не работает - PullRequest
0 голосов
/ 30 марта 2011

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

Просмотр
http://pastebin.com/4grwD02i

Контроллер
http://pastebin.com/jdbYk8tR

Макет
http://pastebin.com/AbQ9xYLG

AppSettings

  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

~~ ОБНОВЛЕНИЕ ~~

Модель
http://pastebin.com/FJkPgKsX

Я просто использую Linq для SQLDBML-файл для моего DAL, так что нет, я не сделал никакого декорирования свойств.Могу ли я сделать это и по-прежнему использовать DBML?

Ответы [ 2 ]

1 голос
/ 30 марта 2011

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

1 голос
/ 30 марта 2011

Я не вижу ни одного из ваших методов действий, проверяющих, является ли состояние модели действительным.Ваши методы действия будут выполняться независимо от того, действительна ли валидация на странице.Чтобы проверить, прошла ли вся ваша проверка, проверьте свойство ModelState.IsValid.

Is ModelState.IsValid имеет значение false, а затем не выполняйте никаких действий с вашим хранилищем данных.Большинство людей просто отображают то же представление, что и раньше, и помощники выполнят свою работу по вводу данных пользователя и отображению проверки.

РЕДАКТИРОВАТЬ: просмотрев ваше сообщение, вы, вероятно, ожидаете, что сообщение никогда не будетпроизойдет, так как вы пытаетесь использовать проверку на стороне клиента.У меня не так много опыта с этой частью проверки, но даже если вы хотите использовать ее, вы не должны полностью полагаться на нее и всегда полагаться на сервер, чтобы выполнить проверку для вас (проверка на стороне клиентадолжно быть в основном для лучшего взаимодействия с пользователем).

Я не уверен, как выглядит ваша модель, но я предполагаю, что вы украсили различные свойства и / или поля атрибутами из System.ComponentModel namespace, правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...