对表单提交禁用ASP.NET服务器验证
Disable ASP.NET Server Validation on form submit
我有一个带有OnClientScript属性的ASP.NET链接按钮,用于打开一个弹出窗口,用户可以在其中搜索一些值,然后这些值应该被转移到打开的ASP.NET页面。为了超过弹出窗口到打开页面的值,我手动强制执行一个post-back vie JavaScript:
window.opener.document.forms[0].submit();
这是在弹出窗口上的工作流程完成后执行的
这是因为打开弹出窗口的页面将再次加载(page_Load在IsPostBack=true的情况下执行,并且通过SessionState变量替代弹出窗口中的值)。
然而,问题是,强制从JavaScript返回这样的帖子也会强制在打开的页面上进行验证。对于使用OnClick-事件来执行返回的按钮,您可以简单地设置
CausesValidation = false
并且所有验证都被禁用。我发现绕过这个问题的唯一方法是手动禁用Page_Load中特定工作流的所有有问题的验证器,然后稍后重新启用它们。然而,这很糟糕,因为页面上有很多验证器,并且启用/禁用每个验证器的逻辑并不简单。
有没有一种简单的方法可以只在一次发布后禁用服务器端验证(而无需手动禁用验证器)。我想要的是类似的东西
CausesValidation = false
其可以在服务器侧的Page_ Load中设置。我不认为有办法从JavaScript中禁用服务器验证,是吗?
编辑:
因此,为了(希望)更清楚地表明这一点,我在我的aspx页面上有一个链接按钮,如下所示:
<asp:LinkButton ID="LB1" runat="server" CausesValidation="False"
OnClientClick="window.open(xyz.aspx?...)"
在xzy.aspx上,在一些用户工作流之后执行以下行:
window.opener.document.forms[0].submit();
这将导致使用LinkButton在页面上回发。作为回发,还会评估所有验证器,即使用户没有应用保存按钮,页面也可能会无效。因此,我想找到一种方法来防止这种验证,以防回发不是由ASP.NET控件中的OnClick事件引起的,而是由类似上述JavaScript的东西引起的。
在上面链接按钮的定义中,设置CausesValidation="False"没有帮助,因为回发不是由链接按钮本身引起的(只设置了OnClientClick属性,回发/表单提交是由弹出窗口上的某些javascript引起的)
因此,我真正需要的是一种方法,告诉ASP.NET不要执行任何验证,以防我的回发是由上面的javascript表单submit而不是ASP.NET控件调用的。
要做到这一点,最困难的方法是手动禁用该特定工作流的所有验证器(通过Page.validators或smth.),然后在下次回发时再次启用它们,但如前所述,验证器逻辑非常复杂,我想防止重新运行验证器的所有初始化逻辑。
ASP.NET中的所有验证器都有一个EnableClientScript
属性,您可以根据需要将其设置为true或false。如果将其设置为false,则可以使用javascript执行回发,然后在代码背后触发验证。
- 需要在加载时访问 java 脚本中的 asp.net 服务器控件
- ASP.NET 服务器端的确认对话框
- ASP.NET 服务器未将页面重新发送到 C# WebMethod上的客户端
- ASP.net 服务器端代码
- 将 JavaScript 日期发送到 asp.net 服务器
- Asp.net.服务器端验证和客户端验证很好地协同工作的最佳方式是什么?
- 对表单提交禁用ASP.NET服务器验证
- 如何在asp.net服务器端通过一个指定的名称获取所有复选框值
- 我可以从javascript向asp.net服务器端分配一个值吗
- ASP.Net服务器处理完成后调用Javascript函数
- ASP.NET服务器端异步页面更新
- 是否有一种方法可以防止某些IP连接到我的Node.js ('net')服务器
- ASP.. NET服务器控件-基于下拉选择显示隐藏文本框
- ASP.. NET服务器控件-基于下拉选择显示隐藏文本框
- 从ASP执行JavaScript.. NET服务器页面加载
- Javascript客户端返回值到asp.net服务器端
- 如何在Asp.Net服务器端使用JavaScript对象
- 如何在.net服务器端检索Http请求参数
- 在.net服务器上压缩/解压缩在客户端使用lz-string.js编码的字符串
- javascript函数可以修改在ASP.NET服务器上运行的元素吗?