Джош,
Ваша проблема является довольно распространенной проблемой в MVC, которая заключается в том, что связыватель модели пытается связать введенные значения из формы в модель.очевидно, если он не «уместится», вы сразу же получите ошибку.
так как же мне заставить связыватель модели использовать мою пользовательскую проверку?и вернуть мое сообщение об ошибке?
ну, сначала прочитайте и сделайте то, что написал Фил Хаак.тогда у вас есть пользовательская проверка.
следующая вещь.Не используйте целые числа и даты в вашей модели!Если пользователь может ввести все, что он хочет, в текстовое поле, это всегда вызовет проблемы.
Что вы должны сделать, это создать flatObject вашего объекта.
Плоский объект довольно прост.Это объект, точная копия переменных внутри, только inst и datetime являются строками (потому что те всегда связываются в связывателе моделей)
пример:
namespace MVC2_NASTEST.Models {
public partial class FlatNieuw {
public int Niw_ID { get; set; }
public string Niw_Datum { get; set; }
public string Niw_Titel { get; set; }
public string Niw_Bericht { get; set; }
public int Niw_Schooljaar { get; set; }
public bool Niw_Publiceren { get; set; }
}
}
единственные целые числа iесть из выпадающих списков, потому что они не терпят неудачу, если значение в выпадающих списках является целым числом.дата (дата) является строкой.я делаю пользовательскую проверку для этой строки.связыватель моделей связывается с этим объектом FlatNieuw.
мой класс Nieuw имеет точно такие же имена полей, что и этот класс.поэтому, когда вы используете UpdateModel (), это все еще работает.Если вы делаете новую запись, вы можете использовать automapper для сопоставления этого flatObject с вашим обычным объектом.
Я думаю, что это, вместе с блогом Фила Хака, должно помочь вам сделать это.Если у вас есть вопросы, не стесняйтесь спрашивать.