MVC ModelState ошибочно сообщает об ошибках
Я получаю модель из вида.
Некоторые значения заполняются автоматически.
Однако некоторые обязательные значения необходимо добавить вручную, например, так:
[HttpPost]
public ActionResult Foobar(FooModel model, FormCollection collection)
{
// "timePicker" is a dropdown list containing different times
var time = collection["timePicker"].Split(':');
model.Hours = int.Parse(time[0]);
model.Minutes = int.Parse(time[1]);
if (ModelState.IsValid)
{
... // Do stuff
}
}
Итак, вот проблема:
ModelState.IsValid
ложно
Я отладил его, и он утверждает, что model.Minutes
а также model.Hours
не назначены на.
... Что не соответствует действительности, потому что я только что присвоил им значения!
Я подумал об использовании ModelState.Clear()
, но я не хочу вручную проверять правильность всей остальной информации.
Есть ли другой способ решить проблему?
1 ответ
Ну, модель привязки, ошибки в ModelState
, было сделано до ввода вашего действия.
Итак Minutes
а также Hours
ошибки в ModelState перед добавлением значений в часах и минутах (что делает его недействительным).
Вы можете просто удалить эти ошибки (и не все ошибки, так как Clear()
делает), делая:
ModelState.Remove("Hours");
ModelState.Remove("Minutes");
Другой способ решить эту проблему - создать (и использовать) собственный ModelBinder.