Below is my mark up.
<asp:TextBox ID="txtPatientDateOfBirth" runat="server"
CssClass="rightDivInnerControls" ClientIDMode="Static"
CausesValidation="True">
</asp:TextBox>
<asp:CompareValidator ID="cvPatientDateOfBirth" runat="server"
ErrorMessage="Enter proper date."
Type="Date" ControlToValidate="txtPatientDateOfBirth" Font-Bold="True"
Operator="DataTypeCheck"
ValidationGroup="FirstPreview">
</asp:CompareValidator>
<asp:Button ID="btnSaveChanges" runat="server"
Text="Save Changes" OnClientClick="return showFinalReviewAlert();"
CssClass="btnPrimary hideInPrint btnEditFinalReport"
ValidationGroup="FirstPreview"
onclick="btnSaveChanges_Click" ClientIDMode="Static"/>
当我将日期更改为错误的格式时,它会立即显示错误消息。
但是当我单击“btnSaveChanges”按钮时,它会进行回发。我认为缺少某些东西,因为它正在进行回发。
谁能帮我解决这个问题。我想如果验证失败则停止回发。
谢谢。
最佳答案
通过返回 showFinalReviewAlert();
的值在OnClientClick
按钮,您将阻止页面验证的发生。
这实际上是正在呈现的 HTML(为查看而简化)...
<input type="submit"
id="btnSaveChanges"
onclick="return showFinalReviewAlert();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSaveChanges;, "", true, "", "", false, false))"
name="btnSaveChanges">
重要的一点是...
onclick="return showFinalReviewAlert();WebForm_DoPostBackWithOptions....
意思就是不管showFinalReviewAlert()
返回,WebForm_DoPostBackWithOptions
永远达不到。但是,因为它是一个 <input type="submit">
无论如何,该页面都会后打包到服务器。
所以,如果showFinalReviewAlert
的返回值必须通过返回值 false
来阻止回发的发生, 你应该设置 OnClientClick
属性为...
OnClientClick="if(showFinalReviewAlert()==false){return false;}"
换句话说,如果showFinalReviewAlert
返回 false
然后停止按钮继续任何回发处理...但如果它返回 true
,然后允许进行回发验证。
另一方面,如果 showFinalReviewAlert()
的结果没关系...只需删除 return
简单地给予...
OnClientClick="showFinalReviewAlert();"
关于c# - 比较验证器不会停止回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11688399/