ASP.NET сломал рендеринг кода на стороне клиента проверки в Firefox

Этот был тупиком для меня. Его очень легко продублировать, хотя это довольно неясная проблема. Это произошло из-за того, что я выполнял некоторую работу с javascript на веб-странице, но также использовал средства проверки, которые предоставляет ASP.NET.

Некоторые особенности заранее: использование машины для разработки на базе Vista с платформой 3.5 и IIS 7. У меня также есть машина QA, на которой работает Windows Server 2003, также с платформой 3.5, но с IIS 6.

Возьмите страницу с простым TextBox, Validation Control и кнопкой, чтобы отправить их. Например:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Text is Required" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>  
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />  

Простой управляющий код проверки ASP.NET здесь... Идея заключается в том, что код проверки на стороне клиента генерируется для обязательного поля, и обратная передача не выполняется, если в текстовом поле нет поля. Если браузер не поддерживает скрипты на стороне клиента, ASP.NET перехватит его на стороне сервера с помощью свойства Page.IsValid.

Когда я запускаю это на своем компьютере для разработки под Vista, код сценариев на стороне клиента генерируется как для IE, так и для Firefox и работает просто отлично.

Когда я запускаю с машины QA на основе win2003, клиентский код для элементов управления валидатора также генерируется для обоих браузеров. Код проверки для IE работает нормально... но не работает для Firefox. Когда кнопка отправки нажата (с пустым текстовым полем), код на стороне клиента, по-видимому, игнорируется и выполняется обратная передача. Теперь ошибка проверки обнаруживается на стороне сервера, но я хочу знать, почему она не работает на стороне клиента.

Интересно, что если я возьму представления исходных страниц в Firefox с машины разработки (той, которая работает) и машины QA (той, которая не работает) и сравню их - код проверки на стороне клиента существенно отличается.

Идеи о том, что нужно изменить, чтобы заставить код проверки на стороне клиента работать в Firefox с машиной QA?

ОБНОВЛЕНИЕ: было несколько комментариев, просящих видеть сгенерированный источник. Я сохранил исходники Dev и QA в виде файлов.htm и сжал их. Вы можете получить их на http://www.optsolutions.com/testvalidation.zip

2 ответа

Проверьте ваш web.config на наличие xhtmlconformance и убедитесь, что он не настроен как устаревший.

http://aspadvice.com/blogs/rbirkby/archive/2006/11/01/Client_2D00_side-validation-in-Firefox.aspx

У меня та же проблема с аналогичной настройкой. Различия в настройках browserCaps - самая многообещающая возможность, с которой я когда-либо сталкивался.

http://msdn.microsoft.com/en-us/library/sk9az15a(VS.80).aspx

Другие вопросы по тегам