Валидатор в <noscript>вызывает ошибку JavaScript - PullRequest
1 голос
/ 16 февраля 2009

Следующий код .NET 3.5, помещенный в файл aspx, вызовет ошибку JavaScript при загрузке страницы (для пользователей, у которых включен JavaScript):

<noscript>
    <asp:TextBox ID="txt" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="txt_RequiredFieldValidator" runat="server" 
      ControlToValidate="txt"></asp:RequiredFieldValidator>
    <asp:Button ID="btn" runat="server" Text="Button" />
</noscript>

Ошибка возникает из-за того, что JavaScript, созданный элементом управления ASP.NET validator, не содержит нулевую проверку перед второй строкой кода ниже:

var ctl00_body_txt_RequiredFieldValidator =
  document.all ?
    document.all["ctl00_body_txt_RequiredFieldValidator"] :
    document.getElementById("ctl00_body_txt_RequiredFieldValidator");

ctl00_body_txt_RequiredFieldValidator.controltovalidate = "ctl00_body_txt";

Может кто-нибудь предложить решение этой проблемы?

<ч /> Сноска: Почему я это делаю? Для моих пользователей, не поддерживающих JavaScript, я заменяю некоторые функции AJAX другими компонентами пользовательского интерфейса, которые нуждаются в проверке.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2009

Вы должны добавить следующее в RequiredFieldValidator:

enableclientscript="false"

Поскольку вы используете их в тегах

0 голосов
/ 16 февраля 2009

javascript ищет элемент, содержащийся в noscript? AFAIK Нет чистого способа обнаружить поддержку сценариев со стороны сервера.

Я думаю, вам нужно встроить перенаправление (я видел, что это сделано с помощью мета-обновления в заголовке noscript, если вы не возражаете против сбоя проверки), чтобы подтолкнуть пользователей noscript к «пожалуйста, включите "или сделайте некоторую операцию, чтобы ослабить привязку валидации / контроля, что может потребовать некоторого повторного изобретения колеса. Это одна из тех областей, где тесная связь asp.net между контроллером и представлением действительно наказывает.

...