asp.net - <noscript> 中的验证器导致 JavaScript 错误

标签 asp.net javascript validation graceful-degradation noscript

以下放置在 aspx 文件中的 .NET 3.5 代码将在加载页面时触发 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>

发生错误是因为 ASP.NET 验证程序控件生成的 JavaScript 在下面的第二行代码之前不包含空检查:

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 用户,我正在用一些需要验证的不同 UI 组件替换一些 AJAX 功能。

最佳答案

您应该将以下内容添加到 RequiredFieldValidator:

enableclientscript="false"

由于您在

这将强制(自动)在服务器端为您进行验证。

只需确保在处理响应之前调用“Page.IsValid”即可。

参见 BaseValidator.EnableClientScript了解更多详情。

关于asp.net - <noscript> 中的验证器导致 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/553172/

相关文章:

c# - 如何在值返回方法中使用 try catch block ?

javascript - 防止导航栏元素折叠

javascript - 如何在Electron-Vue项目中使用多scss

validation - Spring:相同的对象,不同的验证

HTML5 &lt;input&gt; 必需属性但不在 <form> 内

c# - 在使用 WebMatrix 环境的 C#.NET 网页中跨范围使用 GetLastInsertId() 是否安全?

c# - 在 Razor ASP.NET MVC 中调用方法

asp.net - 中止 IIS 中的任何 POST 操作

javascript - Jquery中如何获取TimeCircles Plugin的当前时间

python - ConfigObj 和单元素列表