我的页面上有一个 GridView,在 Edit 模板的输入字段上有验证控件(需要和正则表达式)。基本上,当用户在 GridView 中单击“编辑”时,我正在验证用户提交的输入。
这是一些示例标记:
<asp:TemplateField HeaderText="Name" SortExpression="Name">
<EditItemTemplate>
<asp:TextBox ID="EditFacultyName" runat="server" Text='<%# Bind("Name") %>'
CausesValidation="True"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="EditFacultyNameRequired" runat="server"
ControlToValidate="EditFacultyName" ErrorMessage="You must provide a name"
ValidationGroup="ValidateGridView" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ValidationExpression="^[a-zA-Z0-9 ]*$"
ID="EditFacultyNameRegex" runat="server"
ControlToValidate="EditFacultyName"
ErrorMessage="Must be alphanumeric characters and spaces" Display="Dynamic" ValidationGroup="ValidateGridView"></asp:RegularExpressionValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
当我失去对输入元素的焦点时,验证控件会触发,但如果我单击 GridView 中的“更新”,它们不会阻止页面提交。
我做了一个更形象的例子。
在这里,您可以看到 Name 字段为空,并且 Location 字段包含无效字符。验证控件向我显示一个错误,但是当我单击更新(以红色圈出)时,它们仍然会通过并被添加到数据库中。
我怎样才能阻止这种情况发生?
谢谢!