Page.IsValid 如何工作? [英] How does Page.IsValid work?
本文介绍了Page.IsValid 如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下带有 RequiredFieldValidator
的代码.EnableClientScript
属性在验证控件中设置为false".另外我在浏览器中禁用了脚本.
我没有在后面的代码中使用 Page.IsValid
.尽管如此,当我在文本框中没有任何值的情况下提交时,我会收到错误消息
.
从@Dai 的评论中,我知道这可能是一个问题,如果 Page_Load
中有任何代码在 postback
中执行.不会抛出任何验证错误.
(但是,对于按钮点击处理程序,不需要检查Page.IsValid
)
if (Page.IsPostBack){字符串值 = txtEmpName.Text;txtEmpName.Text = value + "Appended";}
问题
- 为什么服务器端验证不在
Page_Load
之前发生? - 为什么当我使用
Page.IsValid
时它工作正常? - 您能否提供对解释此问题的文章的任何参考?(不是说 - 总是使用
Page.IsValid
;而是说明使用Page.IsValid
的强制性场景是什么
更新 1
<块引用>Page.IsValid
只有在运行 Page.Validate()
方法后才能访问,该方法在 Page_Load
之后隐式调用.如果您将所有逻辑保留在 Page_Load 事件处理程序中(强烈建议不要这样做!),请在检查 Page.IsValid
之前调用 Page.Validate()
.
注意:建议不要保留Page_Load
中的所有逻辑.如果按钮单击事件发生某些事情,请将其移至按钮单击事件处理程序.如果下拉事件发生某些事情,请将其移至下拉选定项更改事件处理程序.
更新 2
看起来,我们需要在 button click
中添加 If(Page.IsValid)
同样,如果我们使用 Custom Validator
服务器端验证.请参阅 CustomValidator 运行不佳.
注意:客户端验证问题出现在这里:是否使用 Page_IsValid 或 Page_ClientValidate() (用于客户端事件)
标记
<head runat="服务器"><title></title><script type="text/javascript">警报('哈哈');头部><身体><form id="form1" runat="server"><div><asp:ValidationSummary runat="server" ID="vsumAll" DisplayMode="BulletList" CssClass="validationsummary" ValidationGroup="ButtonClick"/><asp:TextBox ID="txtEmpName" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="valEmpName" runat="server" ControlToValidate="txtEmpName"EnableClientScript="false" ErrorMessage="RequiredFieldValidator" Text="*" Display="Dynamic"ValidationGroup="ButtonClick"></asp:RequiredFieldValidator><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="ButtonClick"/>
</表单>