CustomValidator عنصر تحكم (مرجع عام)
تقييم قيمة عنصر تحكم الإدخال لتحديد ما إذا كان يمرر منطق التحقق من صحة المخصصة.
<asp:CustomValidator
AccessKey="string"
BackColor="color name|#dddddd"
BorderColor="color name|#dddddd"
BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|
Inset|Outset"
BorderWidth="size"
ClientValidationFunction="string"
ControlToValidate="string"
CssClass="string"
Display="None|Static|Dynamic"
EnableClientScript="True|False"
Enabled="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
ErrorMessage="string"
Font-Bold="True|False"
Font-Italic="True|False"
Font-Names="string"
Font-Overline="True|False"
Font-Size="string|Smaller|Larger|XX-Small|X-Small|Small|Medium|
Large|X-Large|XX-Large"
Font-Strikeout="True|False"
Font-Underline="True|False"
ForeColor="color name|#dddddd"
Height="size"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnServerValidate="ServerValidate event handler"
OnUnload="Unload event handler"
runat="server"
SetFocusOnError="True|False"
SkinID="string"
Style="string"
TabIndex="integer"
Text="string"
ToolTip="string"
ValidateEmptyText="True|False"
ValidationGroup="string"
Visible="True|False"
Width="size"
/>
ملاحظات
CustomValidatorعنصر تحكم يسمح لك بإنشاء عنصر تحكم التحقق من صحة مع تخصيص التحقق من صحة منطق. على سبيل المثال، يمكنك إنشاء عنصر تحكم التحقق من صحة التحقق ما إذا كانت القيمة التي تم إدخالها في مربع نص حتى رقم.
عناصر تحكم التحقق من الصحة دوماً إجراء التحقق من صحة التدقيق على الخادم. لديهم أيضاً تطبيق العميل بشكل كامل يسمح لمستعرضات معتمد DHTML (مثل Microsoft إنترنت مستكشف 4.0 أو أحدث) إلى إجراء التحقق من الصحة على العميل. التحقق من جانب العميل يعمل على تحسين عملية التحقق من الصحة عن طريق التحقق من إدخال المستخدم قبل إرسالها إلى الخادم. يسمح هذ إلى أخطاء يمكن الكشف عنها للعميل قبل إرسال النموذج المقدم تجنب معلومات اللازمة للـ round-trip من أجل التحقق من صحة الخادم .
لإنشاء دالة التحقق من صحة الجانب الخادم قم بتوفير معالج ServerValidateالحدث بتنفيذ التحقق من الصحة. السلسلة من عنصر تحكم الإدخال للتحقق من الصحة يمكن الوصول إليها باستخدام Valueخاصية ServerValidateEventArgsتمرير الكائن في معالج الأحداث معلمة. ويتم حينئذ تخزين ناتج عن التحقق من الصحة في IsValidخاصية ServerValidateEventArgsالكائن.
لإنشاء دالة التحقق من صحة العميل قم أولاً بإضافة دالة التحقق من الصحة من جانب الخادم الذي تم وصفه سابقاً. بعد ذلك إضافة دالة برنامج نصي للتحقق من صحة العميل إلى صفحة .aspx.
إذا كنت تستخدم Visual Basic "، يجب أن تكون الدالة في النموذج:
Sub ValidationFunctionName (source, arguments)
إذا كنت تستخدم JScript يجب أن تكون الدالة في النموذج:
Function ValidationFunctionName (source, arguments)
استخدام ClientValidationFunctionالخاصية لتحديد اسم البرنامج النصي للتحقق من الصحة من جانب العميل المقترنة بـ CustomValidatorعنصر تحكم. حيث يتم تنفيذ الدالة البرنامج النصي على العميل, يجب أن تكون الدالة في اللغة يعتمد المستعرض الهدف مثل Visual Basic أو JScript.
مثل التحقق من جانب الخادم باستخدام Valueخاصية argumentsالمعلمة يصل إلى القيمة التحقق من صحة. إرجاع نتيجة التحقق من صحة بواسطة إعداد IsValidخاصية argumentsالمعلمة.
ملاحظة الأمان |
---|
عند إنشاء دالة التحقق من صحة العميل "، تأكد من تضمين وظيفة دالة التحقق من الصحة من جانب الخادم.إذا قمت بإنشاء دالة التحقق من صحة العميل بدون دالة من جانب الخادم المطابق فمن الممكن تعليمات برمجية ضارة إلى تجاوز التحقق من الصحة. |
يمكن أن تكون عناصر تحكم التحقق من الصحة متعددة ومقترنة بعناصر تحكم إدخال مفردة للتحقق من صحة خصائص مختلفة. على سبيل المثال، يمكنك تطبيق عدة عناصر تحكم التحقق من الصحة TextBoxالتحكم التي يسمح للمستخدم بإدخال كمية العناصر لإضافتها إلى عربة التسوق. يمكنك استخدام CustomValidatorالتحكم للتأكد من أن القيمة المحددة أصغر من حجم في المخزون و RequiredFieldValidatorتأكد من أن يقوم المستخدم بإدخال قيمة في عنصر تحكم TextBoxعنصر تحكم.
ملاحظة |
---|
إذا كان عنصر تحكم الإدخال فارغاً, تسمى لا وظائف التحقق من صحة و نجاح التحقق من صحة.استخدام RequiredFieldValidatorالتحكم إلى منع المستخدم من التخطي عنصر تحكم الإدخال. |
من الممكن استخدام CustomValidatorعنصر تحكم دون إعداد ControlToValidateالخاصية. تنفيذ ذلك بشكل عام عند التحقق من صحة الإدخال عدة عناصر تحكم أو التحقق من صحة الإدخال عناصر التحكم التي لا يمكن استخدامها مع عناصر تحكم التحقق من الصحة مثل CheckBoxعنصر التحكم. في هذه الحالة، Valueخاصية argumentsالمعلمة التي تم تمريرها إلى معالج الحدث الخاص ServerValidateالحدث ويحتوي على التحقق من صحة العميل دائماً على دالة سلسلة فارغة (""). ومع ذلك، دالات التحقق من الصحة ما زالت تدعى , في المكان المناسب، لتحديد الصلاحية على الخادم والعميل. للوصول إلى القيمة للتحقق من صحة, يجب أن تعيد إدخال عنصر التحكم المطلوب برمجياً للتحقق من صحة واسترداد القيمة ثم من الخاصية المناسبة. على سبيل المثال، للتحقق من صحة CheckBoxالتحكم على الملقم, لا تقم بتعيين ControlToValidateعلى خاصية عنصر تحكم التحقق من صحة واستخدام التعليمات البرمجية التالية للمعالج للحصول ServerValidateالحدث.
Sub ServerValidation (source As object, args As ServerValidateEventArgs)
args.IsValid = (CheckBox1.Checked = True)
End Sub
void ServerValidation (object source, ServerValidateEventArgs args)
{
args.IsValid = (CheckBox1.Checked == true);
}
لمزيد من المعلومات، راجع فئة CustomValidator أو System.Web.UI.WebControls.CustomValidator.
أمثلة
يوضح مثال التعليمات البرمجية التالب كيفية إنشاء CustomValidatorعنصر تحكم بالتحقق من ما إذا كانت القيمة التي تم إدخالها على الخادم .في مربع النص عدد زوجي. ثم يتم عرض نتائج التحقق من صحة على الصفحة.
ملاحظة الأمان |
---|
يحتوي مثال التعليمات البرمجية هذا على مربع نص الذي يقبل إدخال المستخدم مما يعد تهديد أمان محتمل.بشكل افتراضي، تتحقق صفحات ويب ASP.NET من أن مُدخلات المستخدم لا تتضمن برنامج نصي أو عناصر HTML.لمزيد من المعلومات، راجع نظرة عامة حول عمليات استغلال البرنامج النصي. |
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub ValidateBtn_OnClick(sender As object, e As EventArgs)
If Page.IsValid Then
lblOutput.Text = "Page is valid."
Else
lblOutput.Text = "Page is not valid!"
End If
End Sub
Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)
Dim num As Integer = Integer.Parse(arguments.Value)
arguments.IsValid = ((num mod 2) = 0)
End Sub
</script>
</head>
<body>
<form runat="server">
<h3>CustomValidator Example</h3>
<asp:Label id=lblOutput runat="server"
Text="Enter an even number:"
Font-Name="Verdana"
Font-Size="10pt" /><br>
<p />
<asp:TextBox id="Text1"
runat="server" />
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Text1"
OnServerValidate="ServerValidation"
Display="Static"
ErrorMessage="Not an even number!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<p />
<asp:Button id="Button1"
Text="Validate"
OnClick="ValidateBtn_OnClick"
runat="server"/>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void ValidateBtn_OnClick(object sender, EventArgs e)
{
if (Page.IsValid)
{
lblOutput.Text = "Page is valid.";
}
else
{
lblOutput.Text = "Page is not valid!";
}
}
void ServerValidation (object source, ServerValidateEventArgs arguments)
{
int i = int.Parse(arguments.Value);
arguments.IsValid = ((i%2) == 0);
}
</script>
</head>
<body>
<form runat="server">
<h3>CustomValidator Example</h3>
<asp:Label id=lblOutput runat="server"
Text="Enter an even number:"
Font-Name="Verdana"
Font-Size="10pt" /><br>
<p />
<asp:TextBox id="Text1"
runat="server" />
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Text1"
OnServerValidate="ServerValidation"
Display="Static"
ErrorMessage="Not an even number!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<p />
<asp:Button id="Button1"
Text="Validate"
OnClick="ValidateBtn_OnClick"
runat="server"/>
</form>
</body>
</html>
يوضح مثال التعليمة البرمجية التالي كيفية إنشاء CustomValidatorعنصر التحكم الذي يقوم بإجراء نفس روتين التحقق من صحة كما في المثال السابق ولكن على العميل.
<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
Sub ValidateBtn_OnClick(sender As object, e As EventArgs)
If Page.IsValid Then
lblOutput.Text = "Page is valid."
Else
lblOutput.Text = "Page is not valid!"
End If
End Sub
Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)
Dim num As Integer = Integer.Parse(arguments.Value)
arguments.IsValid = ((num mod 2) = 0)
End Sub
</script>
</head>
<body>
<form runat="server">
<h3>CustomValidator Example</h3>
<asp:Label id=lblOutput runat="server"
Text="Enter an even number:"
Font-Name="Verdana"
Font-Size="10pt" /><br>
<p />
<asp:TextBox id="Text1"
runat="server" />
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Text1"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidation"
Display="Static"
ErrorMessage="Not an even number!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<p />
<asp:Button id="Button1"
Text="Validate"
OnClick="ValidateBtn_OnClick"
runat="server"/>
</form>
</body>
</html>
<script language="javascript">
<!--
function ClientValidate(source, arguments)
{
if ((arguments.Value % 2) == 0)
arguments.IsValid=true;
else
arguments.IsValid=false;
}
// -->
</script>
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void ValidateBtn_OnClick(object sender, EventArgs e)
{
if (Page.IsValid)
{
lblOutput.Text = "Page is valid.";
}
else
{
lblOutput.Text = "Page is not valid!";
}
}
void ServerValidation (object source, ServerValidateEventArgs arguments)
{
int i = int.Parse(arguments.Value);
arguments.IsValid = ((i%2) == 0);
}
</script>
</head>
<body>
<form runat="server">
<h3>CustomValidator Example</h3>
<asp:Label id=lblOutput runat="server"
Text="Enter an even number:"
Font-Name="Verdana"
Font-Size="10pt" /><br>
<p />
<asp:TextBox id="Text1"
runat="server" />
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Text1"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidation"
Display="Static"
ErrorMessage="Not an even number!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<p />
<asp:Button id="Button1"
Text="Validate"
OnClick="ValidateBtn_OnClick"
runat="server"/>
</form>
</body>
</html>
<script language="javascript">
<!--
function ClientValidate(source, arguments)
{
if ((arguments.Value % 2) == 0)
arguments.IsValid=true;
else
arguments.IsValid=false;
}
// -->
</script>