ASP.NET MVC - проверка на стороне сервера для типов значений - PullRequest
2 голосов
/ 28 июня 2011

У меня есть модель, которая содержит типы значений (например, bool, DateTime, перечисления и т. Д.), И я пометил свойства атрибутом [Required].

Я загружаю страницу,не указывайте ценность для чего-либо и отправьте форму.Проверка на стороне клиента отключена.Очевидно, что ModelState недопустимо.

Когда форма возвращается клиенту, эти поля заполняются значением по умолчанию типа (например, false, DateTime.MinValue, первое значение перечисления и т. Д.),Это не совсем то, что я хочу, я хочу, чтобы поля оставались пустыми.

В настоящее время я обхожу это, делая свойства обнуляемыми (например, bool?).Это «правильная» вещь, которую нужно сделать?Или я должен сделать что-то еще, чтобы MVC не заполнял свойства типа значения автоматически значением по умолчанию?

1 Ответ

1 голос
/ 28 июня 2011

Я предполагаю, что вы хотите, чтобы поля в форме оставались пустыми при следующем посещении - в этом случае Nullable types - это один из способов сказать да. Струны это другое.

Примечание: я склонен не использовать Enums в моей ViewModel, а скорее обнуляемые int - я нахожу это проще.

Еще одна хитрость заключается в том, чтобы оставить 0 для Enums, которые будут использоваться в комбинированных полях, не отображенными, а затем добавить опцию «Пожалуйста, выберите» (значение = 0). В этом случае вам лучше без обнуляемого типа, так как 0 полезно.

Все это работает намного лучше, если у вас есть отдельная ViewModel от вашего объекта Domain - используйте Automapper для сопоставления между ними. Это позволяет вам иметь один набор типов в ViewModel, предназначенный для вашего пользовательского интерфейса, без ущерба для того, что у вас есть на уровне вашего домена.

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