Я использую MVC 2 с некоторыми моделями из проекта LinqToSql, который я построил. Я вижу, что когда я отправляю обратно в действие контроллера после редактирования формы, имеющей поле DateTime из модели, помощник MVC Html.ValidationMessageFor () будет приятно отображать ошибку рядом с текстовым полем «Дата».
Это происходит автоматически, когда вы тестируете ModelState.IsValid () в действии контроллера, как если бы привязка модели MVC автоматически знала, что поле DateTime не может быть пустым. У меня вопрос ... У меня есть некоторые другие строковые поля в этих сгенерированных классах LinqToSql, которые не могут быть обнулены (помечены как не обнуляемые в Sql Server, который проходит через сгенерированные классы LinqToSql), так почему же г-н MVC не забирает а также отобразить сообщение «Требуется» в заполнителях ValidationMessageFor (), которые я добавил для этих полей, как это делается для поля DateTime?
Конечно, я успешно добавил классы собеседников MetadataType (typeof ), чтобы покрыть эти ненулевые строковые поля, но, конечно, кажется избыточным добавлять все эти метаданные в классы собеседников, когда сгенерированные классы LinqToSql уже содержат достаточно Информация о том, что MVC может прослушать, как это происходит с DateTime. Если проверка MVC работает с DateTime автоматически, почему бы не использовать эти поля, не допускающие значения NULL?