【问题标题】:RequiredFieldValidator only works for one validationRequiredFieldValidator 仅适用于一次验证
【发布时间】:2015-03-20 15:37:08
【问题描述】:

我有一个用 VS2010 编写的 Web 应用程序。 我有一个 GridView,我想在其中向处于编辑模式的字段添加 2 个不同的验证。一项验证是它是必填字段。另一个验证是最大值。长度为 80 个字符。 下面是我的 HTML:

<asp:GridView ID="UserInfoGridView" runat="server" AutoGenerateColumns="False" 
        Caption="User Information" CaptionAlign="Top" CssClass="grid" HorizontalAlign="Left" 
        PageSize="1" Width="400px" ShowHeaderWhenEmpty="true" Height="60px"
        OnRowCancelingEdit="UserInfoGridView_RowCancelingEdit" 
        OnRowEditing="UserInfoGridView_RowEditing" 
        OnRowUpdating="UserInfoGridView_RowUpdating">
        <Columns>
            <asp:TemplateField HeaderText="Name" ItemStyle-Wrap="false">
                <EditItemTemplate>
                    <asp:TextBox ID="uigvTxtBoxName" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox>   
                     <asp:RequiredFieldValidator ID="RequiredFieldEditName" ControlToValidate="uigvTxtBoxName" runat="server"
                        ErrorMessage="Required field." ValidationGroup="EditUserNameValidation" Display="Dynamic" 
                        CssClass="message-error">
                    </asp:RequiredFieldValidator>                   
                     <asp:RequiredFieldValidator ID="MaxValEditName" ControlToValidate="uigvTxtBoxName" runat="server"
                        ErrorMessage="Maximum length is 80." ValidationGroup="EditUserNameValidation" Display="Dynamic" 
                        CssClass="message-error" ValidationExpression="^.{1,80}$">
                    </asp:RequiredFieldValidator>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="uigvLblName" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Email Address" ItemStyle-Wrap="false">
                <EditItemTemplate>
                    <asp:TextBox ID="uigvTxtBoxEmail" runat="server" Text='<%# Bind("UserEmail") %>'></asp:TextBox>      
                     <asp:RequiredFieldValidator ID="RequiredFieldEditEmail" ControlToValidate="uigvTxtBoxEmail" runat="server"
                        ErrorMessage="Required field." ValidationGroup="EditUserEmailValidation" Display="Dynamic" CssClass="message-error">
                    </asp:RequiredFieldValidator>            
                     <asp:RequiredFieldValidator ID="MaxValEditEmail" ControlToValidate="uigvTxtBoxEmail" runat="server"
                        ErrorMessage="Maximumn length is 80." ValidationGroup="EditUserEmailValidation" Display="Dynamic" CssClass="message-error"
                        ValidationExpression="^.{1,80}$" >
                    </asp:RequiredFieldValidator>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="uigvLblEmail" runat="server" Text='<%# Bind("UserEmail") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Action" ShowHeader="False" ItemStyle-Wrap="false" ItemStyle-HorizontalAlign="Center">
                <EditItemTemplate>
                    <asp:Button ID="uigvUpdateButton" runat="server" CausesValidation="True" CommandName="Update" 
                                    Text="Update" CssClass="gridActionbutton"></asp:Button>
                    &nbsp;<asp:Button ID="uigvCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" 
                                    Text="Cancel" CssClass="gridActionbutton"></asp:Button>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Button ID="uigvEditButton" runat="server" CausesValidation="False" CommandName="Edit" 
                                Text="Edit" CssClass="gridActionbutton">
                    </asp:Button>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <RowStyle Wrap="True" />
    </asp:GridView>

在编辑模式下,如果该字段留空,则会显示两条错误消息。如果用户输入超过 80 个字符,则不会显示任何消息。 我在一个使用 VS 2012 的应用程序中做到了这一点。这可以在 VS2010 中完成吗?如果是这样,我哪里出错了?

谢谢。

【问题讨论】:

    标签: asp.net visual-studio-2010 validation gridview


    【解决方案1】:

    使用正则表达式验证器或范围验证器代替必填字段验证器来验证最大长度。

    所以你需要使用一个必填字段,另一个是正则表达式验证器。

    【讨论】:

    • 就是这样!谢谢。我的错...我做了太多的剪切和粘贴而没有足够的阅读。
    • 第一次单击“更新”按钮时,两种验证都有效。但是,如果用户再次单击它,则不会触发验证并接受数据。如何确保数据不被接受并且每次都会触发验证。
    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2013-11-09
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多