У меня довольно сложная ViewModel, содержащая decimal
свойства, которые предоставляются пользователю в виде текстовых полей. Я хочу, чтобы текстовое поле без значения интерпретировалось как ноль. (Свойства в базовом доменном объекте не имеют значения NULL, а значение по умолчанию равно 0.)ASP.NET MVC: привязка числовых типов из пустых строк без ошибок ModelState
Когда DefaultModelBinder
связывает данные вида с ViewModel, десятичные свойства с пустыми строками для входов инициализируются до нуля (как есть стандарт в .NET), но DefaultModelBinder
добавляет ошибки в ModelState для пустых текстовых полей. В результате ModelState недействителен, и пользователь видит целую кучу значений «A». ошибки для текстовых полей, которые они оставили пустыми.
Как я могу остановить эти ошибки от добавления в ModelState?
Я уже использую ViewModel как объект передачи данных - я отредактирую вопрос, чтобы уточнить. Однако мне пришлось бы реорганизовать много кода, чтобы использовать десятичные числа с нулевым значением, и я надеялся избежать этого. –
ViewModels не предназначены для использования в нескольких действиях. У вас должен быть новый ViewModel для каждого действия, требующего уникальных данных. Используя общие ViewModels для нескольких действий, вы обычно сталкиваетесь с такими проблемами, как тот, который вы испытываете. –