Edit テンプレートの入力フィールドに Validation コントロール (必須および正規表現) を持つ GridView がページにあります。基本的に、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 で [更新] をクリックしてもページの送信は停止しません。
よりグラフィックな例を作成しました。
ここで、[名前] フィールドが空で、[場所] フィールドに無効な文字が含まれていることがわかります。検証コントロールにエラーが表示されますが、[更新] (赤丸で囲んだ部分) をクリックすると、検証コントロールは引き続き処理され、データベースに追加されます。
どうすればそれを防ぐことができますか?
ありがとう!