Отследил это, закомментировав разделы кода страницы и посмотрев, что нужно закомментировать, прежде чем форма заработает.
Ответом было скрытое поле типа char
, которое не было инициализировано и все еще имело начальное значение (char)0
. Сгенерированный источник HTML был:
<input data-val="true" data-val-required="The MyChar field is required." id="MyChar" name="MyChar" type="hidden" value="" />
Я сравнил с Chrome, и там источник HTML был таким же, за исключением:
value="�"
Это, очевидно, значение "char zero". По-видимому, IE переворачивается, когда получает char 0, и просто обрезает его до пустого значения, а затем правило проверки на стороне клиента, которому требуется MyChar
, чтобы иметь значение, вызывает ошибку обратной передачи, и нет места для отображения сообщения об ошибке, так как это в любом случае скрытое поле!
(Примечание в скобках: я нигде не украшал это поле атрибутом [Required]
, поэтому не знаю, почему html генерирует «обязательный» валидатор, особенно если это скрытое поле!)