[转]ASP.NET验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件...
在ASP.Net中,为了方便表单的验证,提供了验证控件来完成表单输入数据的验证。这些验证控件确实是功能强大,为写表单程序提供了极大的便利。但是,在不熟悉的情况下,经常碰到问题。其中,最常见的是遇到错误:在验证发生前无法调用 Page.IsValid。
这个问题我认为是很多朋友受了《深入接触ASP.Net》这本书。这本书在网友间流传甚广,也确实是一本不错的入门书,但是错误也有一些,比如这里。在该书论述到验证组件的时候,演示RequiredFieldValidator的用法时,有这样一个程序:
RequiredFieldValidator.aspx:
<% @ Page Language="C#" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
if(Page.IsPostBack)
{
if(Page.IsValid)
{
show.Text = "已经通过验证";
}
else
{
show.Text = "没有通过验证";
}
}
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<form runat="server">
<table>
<tr><td colspan=2 align="center"><b>RequiredFieldValidator控件演示</b></td></tr>
<tr>
<td>姓名:</td>
<td><asp:TextBox id="name" runat="server" />*
<asp:RequiredFieldValidator id="rfv1" runat="server"
ControlToValidate="name"
Display="Static"
>(请填写姓名)
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>年龄:</td>
<td><asp:TextBox id="age" runat="server" />*
<asp:RequiredFieldValidator id="rfv2" runat="server"
ControlToValidate="age"
Display="Static"
>(请填写年龄)
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td><asp:Button Text="提交" runat="server" /></td>
<td></td>
</tr>
</table>
<hr>
<asp:Label id="show" ForeColor="red" runat="server" />
</form>
</body>
</html>
运行这个程序,就发生了错误:在验证发生前无法调用 Page.IsValid。应在控件的事件处理程序中使用 CausesValidation=True 或在调用 Page.Validate 后对它进行查询。
这个问题的发生来自作者的一个小疏忽。其实,在点击提交按钮时,程序先进行了验证,验证通过后才会和服务器交互(这里是重新加载,调用了Page_Load)。
问题的根源是对于asp:Button控件,点击的时候是默认先进行表单的验证的。有的朋友希望在表单里有两个按钮,其中有的按钮执行的操作和表单本身无关,不需要验证,但也默认必须进行验证,对程序设计上造成不少烦恼。
其实,这个问题很好解决。Button控件有一个属性 CauseValidation,默认是true。只需要将此属性设为false,就不会引发表单验证了。需要验证的时候,可以手工调用验证代码:验证控件.Validate()或者Page.Validate()进行验证。
[转]ASP.NET验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件...相关推荐
- [转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件...
在ASP.Net中,为了方便表单的验证,提供了验证控件来完成表单输入数据的验证.这些验证控件确实是功能强大,为写表单程序提供了极大的便利.但是,在不熟悉的情况下,经常碰到问题.其中,最常见的是遇到错误 ...
- C#窗口调用百度云实现人脸识别。(注意代码中添加的控件以及部分传值给函数,亲测百分百可用。)
调用的dll库文件 代码模块 首先是连接开启电脑摄像头,拍照后保存照片到本地. 然后是调用百度云: 1.获取百度云access_token与百度云连接: 2.建立控制太应用:人脸识别: 3.人脸库的人 ...
- html bs架构调用客户端打印机用客户端及客户端局域网打印机打印,使用ScriptX.cab控件...
<html> <head> <style type="text/css" media="print"> DIV.d1 { D ...
- ASP.NET中AJAX的UpdatePannel控件的用法
ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...
- asp.net 控件的 ID ,ClientID ,UniqueID 区别
对于每一个服务器控件System.Web.UI.Control 都具有 ID,UniqueID,ClientID 三个属性,那么这个三者到底有河关系,在客户端HTML中又是如何对应呈现的呢? ID:获 ...
- 风影ASP.NET基础教学 4 验证控件
前言 无论什么应用软件系统,它最本质的功能和用途就是处理数据.这样,数据的安全性就成为了系统设计里面非常重要的话题,提交一些不安全的数据(如SQL注入.数据类型或者数据范围不合适等)常常会导致系统计算 ...
- Asp.Net中验证控件简单分析
为了实现验证,.net提供了一个javascript脚本,当我们生成一个asp.net页面时,通过查看页面源代码的方式,会发现都调用了下面一个javascript文件: <script src= ...
- asp.net页面回传与js调用服务端事件、PostBack的原理详解(转)
Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务器端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为subm ...
- asp.net页面回传与js调用服务端事件,Postback的原理
Asp.net 中在客户端触发服务器端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton 这两种 ...
最新文章
- (转)深入理解SP、LR和PC
- DOM方式动态加载数据
- 【赠书】掌握人工智能重要主题,深度强化学习实践书籍推荐
- 加密解密、Openssl、自建CA
- 剑指offer:变态跳台阶
- C++中lock_guard的学习
- linux fg 命令,Linux fg 命令 command not found fg 命令详解 fg 命令未找到 fg 命令安装 - CommandNotFound ⚡️ 坑否...
- python怎么用圆周率_Python语言中,如何使用圆周率?
- 【蓝桥杯单片机】PWM(LED亮度调节)
- javascript的bind方法
- mysql 游标插入数据_mysql游标插入问题
- android硬编码封装mp4,音频编解码(软/硬编码),音频转码
- python化学公式配平_配平化学方程式的C++代码实现
- ios在判断设备是ipad_iOS 判断设备型号、屏幕尺寸、系统版本、设备朝向
- System32与SysWow64的区别
- Ubuntu下 百度在线语音合成使用
- Linux进程中的RSS和VSZ
- 基于 TMS320F2812 的直流无刷电机(BLDCM)的开环控制系统
- 行走在崩溃边缘,程序猿“自救”指南!
- Hi ! 哈希,Hash