Page.Validate Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Instruuje wszystkie kontrolki weryfikacji zawarte na stronie, aby zweryfikować przypisane informacje.
Przeciążenia
Validate() |
Instruuje wszystkie kontrolki weryfikacji zawarte na stronie, aby zweryfikować przypisane informacje. |
Validate(String) |
Instruuje kontrolki weryfikacji w określonej grupie weryfikacji w celu zweryfikowania przypisanych informacji. |
Validate()
Instruuje wszystkie kontrolki weryfikacji zawarte na stronie, aby zweryfikować przypisane informacje.
public:
virtual void Validate();
public virtual void Validate ();
abstract member Validate : unit -> unit
override this.Validate : unit -> unit
Public Overridable Sub Validate ()
Przykłady
Poniższy przykład kodu wywołuje Validate metodę na stronie w scenariuszu z kilkoma różnymi grupami weryfikacji zdefiniowanymi.
Ważne
Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button_Click(object sender, EventArgs e)
{
switch (((Button)sender).ID)
{
case "Button1":
if (TextBoxValidator1.IsValid)
{
Label1.Text = "TextBox validates.";
}
else
{
Label1.Text = "";
Label4.Text = "";
}
break;
case "Button2":
// Must explicitly cause Validate here because
// Button2 has CausesValidation set to false.
Validate("Group2");
if (CustomValidator.IsValid)
{
Label2.Text = "CheckBox validates.";
}
else
{
Label2.Text = "";
Label4.Text = "";
}
break;
default:
Label1.Text = "";
Label2.Text = "";
break;
}
}
// Custom validator for check box.
protected void CustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (CheckBox1.Checked == true);
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && Context.Request.Form["__EVENTTARGET"] == "TextBox2")
{
// Handle AutoPostBack TextBox.
Validate("Group3");
if (Page.IsValid)
{
Label3.Text = "AutoPostBack TextBox validates.";
}
else
{
Label3.Text = "";
Label4.Text = "";
}
}
}
protected void Button3_Click(object sender, EventArgs e)
{
Validate();
if (Page.IsValid)
Label4.Text = "All controls valid.";
else
{
Label1.Text = "";
Label2.Text = "";
Label3.Text = "";
Label4.Text = "";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Validate</title>
</head>
<body>
<form id="form1" runat="server">
<div>
TextBox
<asp:TextBox ID="TextBox1" ValidationGroup="Group1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator Display="Static" ID="TextBoxValidator1" ValidationGroup="Group1" runat="server" ControlToValidate="TextBox1" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<br />
CheckBox
<asp:CheckBox ID="CheckBox1" ValidationGroup="Group2" runat="server" />
<asp:CustomValidator ID="CustomValidator" ValidationGroup="Group2" runat="server" Text="(this option required)" OnServerValidate="CustomValidator_ServerValidate" EnableClientScript="False"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" ValidationGroup="Group1" CausesValidation="true" runat="server" Text="Validate Group1 Controls" OnClick="Button_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Button ID="Button2" ValidationGroup="Group2" CausesValidation="false" runat="server" Text="Validate Group2 Controls" OnClick="Button_Click" />
<asp:Label ID="Label2" runat="server"></asp:Label>
<br />
<br />
AutoPostBack TextBox
<asp:TextBox AutoPostBack="true" ID="TextBox2" ValidationGroup="Group3" runat="server" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="TextBoxValidator2" ValidationGroup="Group3" runat="server" ControlToValidate="TextBox2" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<asp:Label ID="Label3" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="Button3" CausesValidation="true" runat="server" Text="Validate All Controls" OnClick="Button3_Click" />
<asp:Label ID="Label4" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Select Case CType(sender, Button).ID
Case "Button1"
If TextBoxValidator1.IsValid Then
Label1.Text = "TextBox validates."
Else
Label1.Text = ""
Label4.Text = ""
End If
Case "Button2"
' Must explicitly cause Validate here because
' Button2 has CausesValidation set to false.
Validate("Group2")
If CustomValidator.IsValid Then
Label2.Text = "CheckBox validates."
Else
Label2.Text = ""
Label4.Text = ""
End If
Case Else
Label1.Text = ""
Label2.Text = ""
End Select
End Sub
Protected Sub CustomValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
args.IsValid = (CheckBox1.Checked)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (IsPostBack) Then
' Handle AutoPostBack TextBox.
Validate("Group3")
If (Page.IsValid) Then
Label3.Text = "AutoPostBack TextBox validates."
Else
Label3.Text = ""
Label4.Text = ""
End If
End If
End Sub
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Validate()
If (Page.IsValid) Then
Label4.Text = "All controls valid."
Else
Label1.Text = ""
Label2.Text = ""
Label3.Text = ""
Label4.Text = ""
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Validate</title>
</head>
<body>
<form id="form1" runat="server">
<div>
TextBox
<asp:TextBox ID="TextBox1" ValidationGroup="Group1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator Display="Static" ID="TextBoxValidator1" ValidationGroup="Group1" runat="server" ControlToValidate="TextBox1" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<br />
CheckBox
<asp:CheckBox ID="CheckBox1" ValidationGroup="Group2" runat="server" />
<asp:CustomValidator ID="CustomValidator" ValidationGroup="Group2" runat="server" Text="(this option required)" OnServerValidate="CustomValidator_ServerValidate" EnableClientScript="False"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" ValidationGroup="Group1" CausesValidation="true" runat="server" Text="Validate Group1 Controls" OnClick="Button_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Button ID="Button2" ValidationGroup="Group2" CausesValidation="false" runat="server" Text="Validate Group2 Controls" OnClick="Button_Click" />
<asp:Label ID="Label2" runat="server"></asp:Label>
<br />
<br />
AutoPostBack TextBox
<asp:TextBox AutoPostBack="true" ID="TextBox2" ValidationGroup="Group3" runat="server" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="TextBoxValidator2" ValidationGroup="Group3" runat="server" ControlToValidate="TextBox2" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<asp:Label ID="Label3" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="Button3" CausesValidation="true" runat="server" Text="Validate All Controls" OnClick="Button3_Click" />
<asp:Label ID="Label4" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
Uwagi
Ta metoda jest wywoływana, gdy użytkownik kliknie dowolną ASP.NET kontrolkę serwera, która ma CausesValidation
właściwość ustawioną na true
wartość , która jest wartością domyślną. Obejmują one kontrolki , i serwera sieci Web, HtmlInputButtonHtmlInputImagekontrolki , i HtmlButton serwera HTML oraz kontrolki, które mogą automatycznie publikować z powrotem na serwerze, takie jak TextBoxkontrolki , CheckBox, ListControli BulletedList .LinkButtonImageButtonButton
Aby wyłączyć walidację dla dowolnej kontrolki przycisku na stronie, ustaw właściwość kontrolki CausesValidation
przycisku na false
wartość .
Po wywołaniu tej metody wykonuje iterację po kontrolkach walidacji zawartych w ValidatorCollection obiekcie skojarzonym z Page.Validators właściwością i wywołuje logikę walidacji dla każdej kontrolki walidacji w bieżącej grupie walidacji. Grupa sprawdzania poprawności jest określana przez kontrolkę, która opublikowała stronę na serwerze. Jeśli grupa sprawdzania poprawności nie zostanie określona, nie zostanie użyta żadna grupa sprawdzania poprawności.
Uwaga
Zachowanie walidacji strony zostało zmienione. W ASP.NET 2.0 kontrolki nie wywołają Page.Validate() już metody . Zamiast tego używają Page.Validate(String) metody . Jeśli używasz Page.Validate() metody na stronie ASP.NET 2.0, grupy weryfikacji są ignorowane, a wszystkie kontrolki są weryfikowane.
Uwagi dotyczące dziedziczenia
Metoda Validate() nie jest używana przez ASP.NET 2.0. W przypadku używania ASP.NET 2.0 przesłoń metodę Validate(String) w celu zmiany zachowania sprawdzania poprawności strony.
Zobacz też
Dotyczy
Validate(String)
Instruuje kontrolki weryfikacji w określonej grupie weryfikacji w celu zweryfikowania przypisanych informacji.
public:
virtual void Validate(System::String ^ validationGroup);
public virtual void Validate (string validationGroup);
abstract member Validate : string -> unit
override this.Validate : string -> unit
Public Overridable Sub Validate (validationGroup As String)
Parametry
- validationGroup
- String
Nazwa grupy sprawdzania poprawności kontrolek do zweryfikowania.
Przykłady
Poniższy przykład kodu wywołuje Validate metodę na stronie w scenariuszu z kilkoma różnymi grupami weryfikacji zdefiniowanymi.
Ważne
Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button_Click(object sender, EventArgs e)
{
switch (((Button)sender).ID)
{
case "Button1":
if (TextBoxValidator1.IsValid)
{
Label1.Text = "TextBox validates.";
}
else
{
Label1.Text = "";
Label4.Text = "";
}
break;
case "Button2":
// Must explicitly cause Validate here because
// Button2 has CausesValidation set to false.
Validate("Group2");
if (CustomValidator.IsValid)
{
Label2.Text = "CheckBox validates.";
}
else
{
Label2.Text = "";
Label4.Text = "";
}
break;
default:
Label1.Text = "";
Label2.Text = "";
break;
}
}
// Custom validator for check box.
protected void CustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (CheckBox1.Checked == true);
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && Context.Request.Form["__EVENTTARGET"] == "TextBox2")
{
// Handle AutoPostBack TextBox.
Validate("Group3");
if (Page.IsValid)
{
Label3.Text = "AutoPostBack TextBox validates.";
}
else
{
Label3.Text = "";
Label4.Text = "";
}
}
}
protected void Button3_Click(object sender, EventArgs e)
{
Validate();
if (Page.IsValid)
Label4.Text = "All controls valid.";
else
{
Label1.Text = "";
Label2.Text = "";
Label3.Text = "";
Label4.Text = "";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Validate</title>
</head>
<body>
<form id="form1" runat="server">
<div>
TextBox
<asp:TextBox ID="TextBox1" ValidationGroup="Group1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator Display="Static" ID="TextBoxValidator1" ValidationGroup="Group1" runat="server" ControlToValidate="TextBox1" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<br />
CheckBox
<asp:CheckBox ID="CheckBox1" ValidationGroup="Group2" runat="server" />
<asp:CustomValidator ID="CustomValidator" ValidationGroup="Group2" runat="server" Text="(this option required)" OnServerValidate="CustomValidator_ServerValidate" EnableClientScript="False"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" ValidationGroup="Group1" CausesValidation="true" runat="server" Text="Validate Group1 Controls" OnClick="Button_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Button ID="Button2" ValidationGroup="Group2" CausesValidation="false" runat="server" Text="Validate Group2 Controls" OnClick="Button_Click" />
<asp:Label ID="Label2" runat="server"></asp:Label>
<br />
<br />
AutoPostBack TextBox
<asp:TextBox AutoPostBack="true" ID="TextBox2" ValidationGroup="Group3" runat="server" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="TextBoxValidator2" ValidationGroup="Group3" runat="server" ControlToValidate="TextBox2" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<asp:Label ID="Label3" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="Button3" CausesValidation="true" runat="server" Text="Validate All Controls" OnClick="Button3_Click" />
<asp:Label ID="Label4" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Select Case CType(sender, Button).ID
Case "Button1"
If TextBoxValidator1.IsValid Then
Label1.Text = "TextBox validates."
Else
Label1.Text = ""
Label4.Text = ""
End If
Case "Button2"
' Must explicitly cause Validate here because
' Button2 has CausesValidation set to false.
Validate("Group2")
If CustomValidator.IsValid Then
Label2.Text = "CheckBox validates."
Else
Label2.Text = ""
Label4.Text = ""
End If
Case Else
Label1.Text = ""
Label2.Text = ""
End Select
End Sub
Protected Sub CustomValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
args.IsValid = (CheckBox1.Checked)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (IsPostBack) Then
' Handle AutoPostBack TextBox.
Validate("Group3")
If (Page.IsValid) Then
Label3.Text = "AutoPostBack TextBox validates."
Else
Label3.Text = ""
Label4.Text = ""
End If
End If
End Sub
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Validate()
If (Page.IsValid) Then
Label4.Text = "All controls valid."
Else
Label1.Text = ""
Label2.Text = ""
Label3.Text = ""
Label4.Text = ""
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Validate</title>
</head>
<body>
<form id="form1" runat="server">
<div>
TextBox
<asp:TextBox ID="TextBox1" ValidationGroup="Group1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator Display="Static" ID="TextBoxValidator1" ValidationGroup="Group1" runat="server" ControlToValidate="TextBox1" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<br />
CheckBox
<asp:CheckBox ID="CheckBox1" ValidationGroup="Group2" runat="server" />
<asp:CustomValidator ID="CustomValidator" ValidationGroup="Group2" runat="server" Text="(this option required)" OnServerValidate="CustomValidator_ServerValidate" EnableClientScript="False"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" ValidationGroup="Group1" CausesValidation="true" runat="server" Text="Validate Group1 Controls" OnClick="Button_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Button ID="Button2" ValidationGroup="Group2" CausesValidation="false" runat="server" Text="Validate Group2 Controls" OnClick="Button_Click" />
<asp:Label ID="Label2" runat="server"></asp:Label>
<br />
<br />
AutoPostBack TextBox
<asp:TextBox AutoPostBack="true" ID="TextBox2" ValidationGroup="Group3" runat="server" CausesValidation="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="TextBoxValidator2" ValidationGroup="Group3" runat="server" ControlToValidate="TextBox2" ErrorMessage="(please enter some text)" EnableClientScript="False"></asp:RequiredFieldValidator>
<asp:Label ID="Label3" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="Button3" CausesValidation="true" runat="server" Text="Validate All Controls" OnClick="Button3_Click" />
<asp:Label ID="Label4" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
Uwagi
Ta metoda jest wywoływana, gdy użytkownik kliknie dowolną ASP.NET kontrolkę serwera, która ma CausesValidation
właściwość ustawioną na true
wartość , która jest wartością domyślną. Obejmują one kontrolki , i serwera sieci Web, HtmlInputButtonHtmlInputImagekontrolki , i HtmlButton serwera HTML oraz kontrolki, które mogą automatycznie publikować z powrotem na serwerze, takie jak TextBoxkontrolki , CheckBox, ListControli BulletedList .LinkButtonImageButtonButton
Aby wyłączyć walidację dla dowolnej kontrolki przycisku na stronie, ustaw właściwość kontrolki CausesValidation
przycisku na false
wartość .
Metoda Validate weryfikuje określoną grupę weryfikacji. Po wywołaniu Validate metody w grupie weryfikacji metoda zwróci true
wartość tylko wtedy, IsValid gdy zarówno określona grupa walidacji, jak i grupa walidacji kontrolki, która spowodowała opublikowanie strony na serwerze są prawidłowe.