Прежде всего некоторого контекста:Обработка недопустимых значений с ModelBinder в ASP.NET MVC 1,0
У меня есть форма, где я отправляю назад некоторые объекты, которые автоматически материализованные в объекты по MVCS встроенным ModelBinder:
<input type="hidden" name="myobj[0].Id" />
<input type="text" name="myobj[0].Hours" />
<input type="hidden" name="myobj[1].Id" />
<input type="text" name="myobj[1].Hours" />
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(IList<MyObject> myobj);
дополнительно: Я хотел бы подчеркнуть, что мы публикуем в DTO (DataTransferObjects), что мы дальше вниз по линии карты в каркасной сущности сущностей, поэтому мы предпочли бы не нравимся изменить что-либо на DTO, за исключением, возможно, добавления атрибутов.
Проблема
Если пользователь вводит недопустимое значение «Часы», говорят «FuBar», то ModelBinder, естественно, не будет пытаться установить «Hours'-свойством. Но по умолчанию он равен 0, потому что это int, а не строка.
Это вызывает определенные трудности для меня, потому что теперь я не вижу, действительно ли пользователь ввел 0, или если это было вызвано неправильным вводом.
Поскольку я использую самонастраиваемую карту объекта-объекта (Entity Framework), мы не можем изменить отпечаток стопы свойства «Часы» до int?. Я знаю, что MVC имеет встроенную функцию Validation, но мы предпочли бы не реализовывать ее, так как мы знаем, что она была атакованной и что в ASP.NET MVC 2.0 есть несколько новых утверждений.
Решение?
Мне нужно указать пользователю, какое поле является неправильным, поэтому я должен каким-то образом уловить исключение (или, возможно, другое гениальное решение?), Где я могу сделать некоторую логику и откройте новое представление пользователю, где я уточню, что они сделали неправильно.
Моя текущая идея: Написание пользовательского ModelBinder.
Что вы предлагаете?
да, я не собираюсь этого делать;) .. но спасибо за вход – CodeMonkey