asp.net - 单个按钮中的两个验证组,无需客户端单击事件

标签 asp.net validation customvalidator

在多重网格中,我正在验证两个控件,例如日期和金额。当我按下 tabevent 时,它正在正确验证。当我按下保存按钮时,它没有验证。我正在使用两个验证组和两个验证摘要。然后在保存按钮中,我还尝试了使用 javascript 的 onclientclick() 函数,它工作正常,但如果我在日期和金额记录中给出正确的值,则它不会保存。如何克服这个问题。

日期

 <asp:TemplateField HeaderText="Date">
                                                        <ItemTemplate>
                                                            <asp:TextBox ID="txtDate" Text='<%# Bind("AD_REF_DATE") %>' runat="server" CausesValidation="true"
                                                                ValidationGroup="group" Width="80px" AutoPostBack="true" OnTextChanged="txtDate_TextChanged"></asp:TextBox>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:CompareValidator ID="dateValidater" runat="server" ControlToValidate="txtDate"
                                                                Operator="DataTypeCheck" Type="Date" ValidationGroup="group" EnableClientScript="true"
                                                                ErrorMessage="Please enter a valid date (mm/dd/yyyy)." SetFocusOnError="true" Display="None">*</asp:CompareValidator>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>

金额

<asp:TemplateField HeaderText="Amount">
                                                        <ItemTemplate>
                                                            <asp:TextBox ID="txtAmount" MaxLength="17" Text='<%# Bind("AD_AMOUNT") %>' CausesValidation="true"
                                                                ValidationGroup="req" runat="server" AutoPostBack="true">
                                                            </asp:TextBox>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:RegularExpressionValidator ID="regVal1" runat="server" ControlToValidate="txtAmount"
                                                                ErrorMessage="Format(13int,5deci)" ValidationExpression="^[1-9]\d{0,12}(\.\d{1,2})?%?$"
                                                                ValidationGroup="req" Display="None"  EnableClientScript="true" SetFocusOnError="true">
                                                            </asp:RegularExpressionValidator>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>

验证摘要:

 <asp:ValidationSummary ID="ValidationSummary3" runat="server" ValidationGroup="req"
                            HeaderText="Amount:Invalid Format" DisplayMode="BulletList" ShowMessageBox="true"
                            ShowSummary="false" />
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="group"
                            HeaderText="Date:Invalid Format" DisplayMode="BulletList"  ShowMessageBox="true" 
                            ShowSummary="false" />

按钮保存:

 <asp:Button ID="ButtonSave" runat="server"  CssClass="button" CausesValidation="true" Text="<%$Resources:TJFAS501, ButtonSave %>"
                                            OnClick="ButtonSave_Click" TabIndex="6" />

如何在按钮保存中验证这一点并应显示两个弹出框?

最佳答案

您可能想尝试通过按钮的 OnClientClick 手动触发两个组的验证函数,因为您需要针对两个验证组进行验证。目前,您的验证未触发,因为您没有为按钮分配任何 ValidationGroup,因此它只是寻找未定义 ValidationGroup 的验证器(您的组是:group 和 req )。

您可以通过 javascript 调用 Page_ClientValidate() 来手动触发验证检查(请务必将按钮上的 CauseValidation 设置为 false),并且它有一个可选参数这需要验证组。

<asp:Button ID="yourButton" runat="server" OnClick="ButtonSave_Click"
    CausesValidation="false" TabIndex="6"
    OnClientClick="return (Page_ClientValidate('group') && Page_ClientValidate('req'));" />

您可以在 MSDN 上阅读有关 Page_ClientValidate 的更多信息。 .

为每个操作(例如您的按钮)设置一个验证组会更容易,但我认为出于某种原因您需要两个组。

关于asp.net - 单个按钮中的两个验证组,无需客户端单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324744/

相关文章:

c# - 学习 .NET Web 服务的最佳资源是什么?

c# - jquery AJAX 和 web 服务使用 onchange 作为下拉列表

silverlight - S/L 4 & IDataErrorInfo - 如何强制重新验证控件(触摸相关控件时)

entity-framework - Entity Framework 复杂类型自定义验证,停止验证递归

javascript - 如何解决 Javascript 正则表达式模式中的意外量词?

c# - 另一个页面( session )之间的列表框中的双值(并列)。我需要页面之间列表框中的文本+值(变量 session )

html - 如何对齐标签和文本区域?

validation - 目前哪些浏览器支持 'range' 输入?

ruby-on-rails - Rails - 简单的表单验证

django - django 更新时的模型验证