Я использую флажок в форме ASP.NET MVC следующим образом:
<%=Html.CheckBox("AgreeToRules", Model.AgreeToRules)%>
Свойство acceptToRules в модели является логическим значением. Во время тестирования все это работало нормально. Однако теперь, когда мы начали работу с этим приложением, я вижу относительно небольшое, но значительное количество ошибок в следующих сообщениях:
System.Web.HttpUnhandledException:
Исключение типа
'System.Web.HttpUnhandledException'
был брошен. --->
System.InvalidOperationException:
преобразование параметров из типа
'System.String' для ввода
Ошибка System.Boolean. Увидеть внутренний
Исключение для получения дополнительной информации. --->
System.FormatException: Y не является
допустимое значение для логического значения. --->
System.FormatException: строка не была
признан действительным логическим значением.
Похоже, это происходит, когда механизм просмотра пытается отобразить форму после публикации, а значение флажка, возвращаемого из ValueProvider, выглядит следующим образом:
Y, ложь
OR
N, ложь
HTML-код, отображаемый в исходной форме, выглядит следующим образом:
<input id="AgreeToRules" name="AgreeToRules" type="checkbox" value="true" />
<input name="AgreeToRules" type="hidden" value="false" />
Во время тестирования я ожидал (и показал), что опубликованное значение будет выглядеть так:
истина, ложь
если отмечено или
ложь
если не проверено. Так откуда же N и Y?
Я добавил пользовательский агент в список информации, возвращаемой из обработчика ошибок, и кажется (пока), что все ошибки происходят под Windows XP с FF 3.0.10, но это именно то, что я тестировал, и проблема не существовала во время тестирования.
Есть мысли?