Когда MVC отображает представление, оно будет использовать значение попытки поля, а не значение модели, если оно существует (например, в поле даты, которое я поставил «вторник», это не будет привязывать модель, но вы захотите показать используйте поле для ввода и выделите его как недействительное), вы изменяете значение модели, но не значение попытки.
Попытка удерживается в словаре состояния модели:
ModelState["KeyToMyValue"].Value.Value.AttemptedValue
Доступ к этим значениям и их изменение могут быть сложными, если только вы не хотите загружать магические строки в своем коде, и поскольку при привязке модели происходит проверка, ваше измененное значение не будет проверено.
В этих условиях я рекомендую позвонить ModelState.Clear()
, это удалит все проверенные и предпринятые значения, а затем изменит вашу модель напрямую. Наконец, вы хотите получить подтверждение модели, используя TryValidateModel(yourModel)
.
Имейте в виду, что этот метод, вероятно, является самым простым нехакерским способом сделать это, но удалит попытки значения, которые не могут быть привязаны из возвращенного представления.