You are on page 1of 23

‫اﻟﻔﺼﻞ اﻟﺜﺎﻟﺚ‬

‫ﺳﻠﺴﻠﺔ‬

‫ﺧﻄﻮة ﺑﺨﻄﻮة ﺣﺘﻰ اﻻﺣﺘﺮاف‬


‫‪C# & VB‬‬

‫اﻋﺪاد اﻟﻤﮭﻨﺪس‬
‫ﻣﺤﻤﺪ ﻋﻤﺮ اﻟﺤﺎج ﺧﻠﻒ‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬

‫ﻓﻲ ھذا اﻟﻔﺻل‬

‫اﺳﺗﺧدام أداة اﻟﺗﺣﻘق ‪RequiredFieldValidator‬‬ ‫‪‬‬


‫اﺳﺗﺧدام أداة اﻟﺗﺣﻘق ‪RangeValidator‬‬ ‫‪‬‬
‫اﺳﺗﺧدام أداة اﻟﺗﺣﻘق ‪CompareValidator‬‬ ‫‪‬‬
‫اﺳﺗﺧدام أداة اﻟﺗﺣﻘق ‪RegularExpressionValidator‬‬ ‫‪‬‬
‫اﺳﺗﺧدام أداة اﻟﺗﺣﻘق ‪CustomValidator‬‬ ‫‪‬‬
‫اﺳﺗﺧدام اﻷداة ‪ValidationSummary‬‬ ‫‪‬‬
‫ﻧﻘﺎط ھﺎﻣﺔ ﺣول ﺗطﺑﯾﻘﺎت أدوات اﻟﺗﺣﻘق‬ ‫‪‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق ‪:‬‬

‫ﻓﻲ ھذا اﻟﻔﺻل ﺳﻧﺗﻌﻠم ﻛﯾف ﻧﺗﺣﻘق ﻣن ﻣدﺧﻼت اﻟﻣﺳﺗﺧدم ﻋﻧد ﻣﺣﺎوﻟﺔ إرﺳﺎﻟﮫ ﺑﯾﺎﻧﺎت ﻧﻣوذج ﻣﺎ إﻟﻰ‬
‫اﻟﺳﯾرﻓر ‪ ،‬ﻛﻣﺎ ﺳﻧﺗﻌﻠم ﻛﯾﻔﯾﺔ اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق ﻟﻣﻧﻊ اﻟﻣﺳﺗﺧدم ﻣن إرﺳﺎل أﻧﻣﺎط ﺧﺎطﺋﺔ ﻣن‬
‫اﻟﺑﯾﺎﻧﺎت إﻟﻰ ﺟداول ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت ‪ ،‬ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل ﻣﻧﻊ اﻟﻣﺳﺗﺧدم ﻣن إرﺳﺎل ﻛﻠﻣﺔ " ﺗﻔﺎﺣﺔ " ﻓﻲ‬
‫ﺣﻘل ﻣﺧﺻص ﻟﺗﺎرﯾﺦ اﻟﻣﯾﻼد ‪.‬‬

‫ﻓﻲ اﻟﻘﺳم اﻷول ﻣن ھذا اﻟﻔﺻل ﺳﻧﺗﻌرف ﻋﻠﻰ أدوات اﻟﺗﺣﻘق اﻟﻘﯾﺎﺳﯾﺔ اﻟﻣﺿﻣﻧﺔ ﻓﻲ إطﺎر اﻟﻌﻣل‬
‫‪ ، ASP.net 4.0‬ﺣﯾث ﺳﻧﺗﻌﻠم ﻛﯾﻔﯾﺔ اﻟﺗﺣﻛم ﺑﻌرض رﺳﺎﺋل اﻷﺧطﺎء اﻟﻧﺎﺗﺟﺔ ﻋن ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ‪،‬‬
‫وﻛﯾﻔﯾﺔ ﺿم ﻋﻧﺎﺻر اﻟﺗﺣﻘق ﻓﻲ ﻣﺟﻣوﻋﺎت ‪ ،‬وﺳﯾﺗم إرﻓﺎق ﻣﺛﺎل ﺗوﺿﯾﺣﻲ ﻟﻛل أداة ﻣن أدوات‬
‫اﻟﺗﺣﻘق ﻋﻠﻰ ﺣدى ‪.‬‬

‫ﺑﻌد ذﻟك ﺳﻧﺗوﺳﻊ ﻓﻲ ﻣﻔﺎھﯾم أدوات اﻟﺗﺣﻘق ‪ ،‬ﺣﯾث ﺳﻧﺗﻌﻠم ﻛﯾﻔﯾﺔ اﻟﺗﻌﺎﻣل ﻣﻊ أدوات اﻟﺗﺣﻘق اﻟﺧﺎﺻﺔ ‪،‬‬
‫ﻣﺛﻼ ً ﻛﯾﻔﯾﺔ اﺳﺗﺧدام ﺗﻘﻧﯾﺔ اﻷﺟﺎﻛس ﻟﻠﺗﺣﻘق "‪ "AjaxValidator control‬واﻟذي ﯾﻣﻛﻧﻧﺎ ﻣن اﺳﺗدﻋﺎء‬
‫ﺗﺎﺑﻊ ﺗﺣﻘق ﻣوﺟود ﻋﻠﻰ اﻟﺳﯾرﻓر ﻣن ﻗﺑل اﻟﻌﻣﯾل )‪.(client‬‬

‫أدوات اﻟﺗﺣﻘق اﻟﻘﯾﺎﺳﯾﺔ‬

‫ﺗﺣﺗوي ﻣﻧﺻﺔ اﻟﻌﻣل ‪ ASP.net 4.0‬ﻋﻠﻰ ﺳت أدوات ﻗﯾﺎﺳﯾﺔ ﻟﻠﺗﺣﻘق ﻣن ﻣدﺧﻼت اﻟﻣﺳﺗﺧدم وھم ‪:‬‬

‫‪ : RequiredFieldValidator -١‬ﺗﺟﺑر اﻟﻣﺳﺗﺧدم ﻋﻠﻰ إدﺧﺎل ﻗﯾﻣﺔ ﻣﺎ ﻓﻲ اﻟﺣﻘل اﻟﻣرﺗﺑط ﺑﮭذه‬


‫اﻷداة ‪ .‬وﻣن ﺧﺻﺎﺋﺻﮭﺎ ‪:‬‬
‫‪ : ControlToValidate ‬ﻟﺗﺣدﯾد أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه ‪.‬‬
‫‪ : ErrorMessage ‬ﻟﺗﺣدﯾد رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﺣﺎل ﻋدم إدﺧﺎل ﻗﯾﻣﺔ ﻓﻲ أداة‬
‫اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه ‪.‬‬
‫‪ : InitialValue ‬ﺗﺟﺑر اﻟﻣﺳﺗﺧدم ﻋﻠﻰ إدﺧﺎل ﻗﯾﻣﺔ ﻣﻐﺎﯾرة ﻟﻠﻘﯾﻣﺔ اﻟﻣﺣددة ﺑﮭذه اﻟﺧﺎﺻﯾﺔ ‪.‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﻓﻲ ھذا اﻟﻣﺛﺎل ﺳﻧﻘوم ﺑﺈﻧﺷﺎء ﻧﻣوذج ﺑﺳﯾط ‪ ،‬ﺣﯾث ﯾﻘوم اﻟﻣﺳﺗﺧدم ) طﺎﻟب اﻟﺛﺎﻧوﯾﺔ( ﺑﺈدﺧﺎل رﻗم‬
‫اﻛﺗﺗﺎﺑﮫ وﻧوع ﺷﮭﺎدﺗﮫ ﻟﻠﺣﺻول ﻋﻠﻰ ﻧﺗﺎﺋﺟﮫ اﻻﻣﺗﺣﺎﻧﯾﺔ ‪ .‬أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬أﺿف ﻋﻠﯾﮭﺎ أداة ﺗﺣﻛم‬
‫‪ TextBox‬وأداة ‪ DropDownList‬واﺟﻌﻠﮭﺎ ﺗﺣﺗوي ﻋﻠﻰ ﺛﻼﺛﺔ ﻋﻧﺎﺻر )ﻏﯾرﻣﺣدد ‪ ،‬ﻋﻠﻣﻲ ‪ ،‬أدﺑﻲ(‬
‫‪،‬أﺿف زر ﺳﻣـ ّـﮫ "إرﺳﺎل اﻟﺑﯾﺎﻧﺎت" ‪ ،‬أﺿف أداﺗﻲ ﺗﺣﻘق ‪ RequiredFieldValidator‬واﺿﺑط‬
‫ﺧﺻﺎﺋﺻﮭم ﻛﺎﻟﺗﺎﻟﻲ ‪:‬‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬ ‫اﻷداة‬


‫‪TextBox1‬‬ ‫‪ControlToValidate RequiredFieldValidator1‬‬
‫اﻣﻸ ھذا اﻟﺣﻘل‬ ‫‪ErrorMessage RequiredFieldValidator1‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

DropDownList1 ControlToValidate RequiredFieldValidator2


‫اﻣﻸ ھذا اﻟﺣﻘل‬ ErrorMessage RequiredFieldValidator2
‫ﻏﯾرﻣﺣدد‬ IntialValue RequiredFieldValidator2

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="‫ "اﻟﺤﻘﻞ ھﺬا اﻣﻸ‬ControlToValidate="TextBox1"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
‫<اﻻﻛﺘﺘﺎب رﻗﻢ‬br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="DropDownList1" ErrorMessage="‫"اﻟﺤﻘﻞ ھﺬا اﻣﻸ‬
ForeColor="Red" InitialValue="‫>"ﻏﯿﺮﻣﺤﺪد‬
</asp:RequiredFieldValidator>
<asp:DropDownList ID="DropDownList1" runat="server" Height="20px"
Width="125px">
<asp:ListItem Value="none">‫<واﺣﺪة اﺧﺘﺮ‬/asp:ListItem>
<asp:ListItem>‫<ﻋﻠﻤﻲ‬/asp:ListItem>
<asp:ListItem>‫<أدﺑﻲ‬/asp:ListItem>
</asp:DropDownList>
‫<اﻟﺸﮭﺎدة ﻧﻮع‬br />
<asp:Button ID="Button1" runat="server" Text="‫ "اﻟﺒﯿﺎﻧﺎت إرﺳﺎل‬/>
</div>

‫ ﻻﺣظ‬، ‫ اﺿﻐط ﻋﻠﻰ اﻟزر دون ادﺧﺎل ﺑﯾﺎﻧﺎت وﻻﺣظ ظﮭور رﺳﺎﺋل اﻟﺧطﺄ‬، ‫ﻗم ﺑﺗﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ‬
‫" وﻣﻊ ذﻟك‬none" ‫ﺑﺄن ﺣﻘل ﻧوع اﻟﺷﮭﺎدة ﻟﯾس ﻓﺎرغ ﺣﯾث ﯾظﮭر ﻓﯾﮫ اﻟﻧص "ﻏﯾرﻣﺣدد" واﻟذي ﻗﯾﻣﺗﮫ‬
‫" ﻟﻠﺧﺎﺻﯾﺔ‬none" ‫ﻓﻘد ظﮭرت رﺳﺎﻟﺔ اﻟﺧطﺄ "ھذا اﻟﺣﻘل ﻣطﻠوب " واﻟﺳﺑب ھو ﺗﺣدﯾد اﻟﻘﯾﻣﺔ‬
. DropDownList1 ‫" ﻓﻲ‬none" ‫ وﻣﻌﻧﻰ ھذا أﻧﮫ ﯾﺟب إدﺧﺎل ﻗﯾﻣﺔ ﻣﻐﺎﯾرة ﻟﻠﻘﯾﻣﺔ‬initialValue

‫ ﺗﻔﺣص ﻓﯾﻣﺎ إذا ﻛﺎﻧت اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﺗﻘﻊ ﺿﻣن ﻣﺟﺎل ﻣﺣدد ﻣن اﻟﻘﯾم أم‬: RangeValidator -٢
: ‫ وﻣن ﺧﺻﺎﺋﺻﮭﺎ‬. ‫ﻻ‬
. ‫ ﻟﺗﺣدﯾد أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه‬: ControlToValidate 
‫ ﻟﺗﺣدﯾد رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﺣﺎل إدﺧﺎل ﻗﯾﻣﺔ ﺗﻘﻊ ﺧﺎرج‬: ErrorMessage 
. ‫اﻟﻣﺟﺎل اﻟﻣﺣدد‬
. ‫ أﻋﻠﻰ ﻗﯾﻣﺔ ﯾﻣﻛن ﻗﺑوﻟﮭﺎ‬: MaximumValue 
. ‫ أﺻﻐر ﻗﯾﻣﺔ ﯾﻣﻛن ﻗﺑوﻟﮭﺎ‬: MinimumValue 
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫‪ : Type ‬ﻧﻣط اﻟﺑﯾﺎﻧﺎت ‪ ،‬ﺣﯾث ﯾﺟب وﺿﻊ ﻧﻣط اﻟﺑﯾﺎﻧﺎت اﻟﻣﻧﺎﺳب ﻟﺗﺗم ﻋﻣﻠﯾﺔ ﻓﺣص‬
‫اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﺑﺷﻛل ﺳﻠﯾم ‪ ،‬وﯾﺄﺧذ إﺣدى اﻟﻘﯾم ‪:‬‬
‫‪String , Integer , Double , Date, Currency .‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﻓﻲ ﻧﻣوذج إدﺧﺎل ﻋﻼﻣﺎت اﻻﻣﺗﺣﺎن ﺣﯾث إن اﻟﻌﻼﻣﺔ ﯾﺟب أن ﺗﻘﻊ ﺿﻣن اﻟﻣﺟﺎل ﻣن ‪ ٠‬إﻟﻰ ‪. ١٠٠‬‬
‫أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬أﺿف ﻋﻠﯾﮭﺎ أداة ﺗﺣﻛم ‪،TextBox‬أﺿف زر ﺳﻣـ ّـﮫ "إرﺳﺎل اﻟﺑﯾﺎﻧﺎت" ‪ ،‬أﺿف‬
‫أداة ﺗﺣﻘق ‪ RangeValidator‬واﺿﺑط ﺧﺻﺎﺋﺻﮭﺎ ﻛﺎﻟﺗﺎﻟﻲ ‪:‬‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
‫‪TextBox1‬‬ ‫‪ControlToValidate‬‬
‫ﻋﻼﻣﺔ ﺧﺎطﺋﺔ‬ ‫‪ErrorMessage‬‬
‫‪٠‬‬ ‫‪MinimumValue‬‬
‫‪١٠٠‬‬ ‫‪MaximumValue‬‬
‫‪Integer‬‬ ‫‪Type‬‬

‫ﻛود اﻟﺻﻔﺣﺔ ‪:‬‬

‫ﻛود ‪ASP.net‬‬
‫>‪<div‬‬
‫"‪<asp:RangeValidator ID="RangeValidator1" runat="server‬‬
‫"‪" ControlToValidate="TextBox1" ForeColor="Red‬ﺧﺎطﺌﺔ ﻋﻼﻣﺔ"=‪ErrorMessage‬‬
‫>"‪MaximumValue="100" MinimumValue="0" Type="Integer‬‬
‫>‪</asp:RangeValidator‬‬
‫>‪<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox‬‬
‫اﻟﻌﻼﻣﺔ أدﺧﻞ‬
‫>‪<br /‬‬
‫>‪" /‬اﻟﺒﯿﺎﻧﺎت إرﺳﺎل"=‪<asp:Button ID="Button1" runat="server" Text‬‬
‫>‪</div‬‬

‫ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ وأدﺧل رﻗم أﻛﺑر ﻣن ‪ ١٠٠‬أو أﺻﻐر ﻣن ‪ ٠‬ﻟﺗظﮭر ﻟك رﺳﺎﻟﺔ "ﻋﻼﻣﺔ‬
‫ﺧﺎطﺋﺔ " ‪ ،‬ﺟرب ﺑﻌد ذﻟك إدﺧﺎل ﻗﯾﻣﺔ ﻧﺻﯾﺔ – ﻣﺛﻼ ً ‪ :‬ﺗﻔﺎﺣﺔ – ﺳﺗﺟد أن رﺳﺎﻟﺔ اﻟﺧطﺄ ﺳﺗظﮭر أﯾﺿﺎ ً‬
‫ﻗم ﺑﻌد ذﻟك ﺑﺗرك اﻷداة ‪ TextBox1‬ﻓﺎرﻏﺔ واﺿﻐط ﻋﻠﻰ اﻟزر ﺳﺗﻼﺣظ ﻋدم ظﮭور رﺳﺎﻟﺔ اﻟﺧطﺄ ‪،‬‬
‫وذﻟك ﻷن أداة اﻟﺗﺣﻘق ھذه ﺗﻘوم ﻓﻘط ﺑﻔﺣص اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ إن وﺟدت وإن ﻟم ﺗوﺟد ﻓﻼ ﺗطﺎﻟب‬
‫ﺑﺈدﺧﺎﻟﮭﺎ ‪ ،‬ﻹﺟﺑﺎر اﻟﻣﺳﺗﺧدم ﻋﻠﻰ إدﺧﺎل ﻋﻼﻣﺔ ﯾﺟب اﺳﺗﺧدام اﻷداة ‪RequiredFieldValidator‬‬
‫ورﺑطﮭﺎ ﻣﻊ ‪ TextBox1‬ﺣﯾث ﻣن اﻟﻣﻣﻛن رﺑط أﻛﺛر ﻣن أداة ﺗﺣﻘق ﻣﻊ ﻧﻔس ﺣﻘل اﻹدﺧﺎل ‪.‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫‪ : CompareValidator -٣‬ﯾوﺟد ﺛﻼث اﺳﺗﺧداﻣﺎت ﻷداة اﻟﺗﺣﻘق ھذه ‪:‬‬


‫‪ .I‬اﻟﺗﺣﻘق ﻣن ﻧﻣط اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ ‪ ،‬ﻣﺛﻼ ً اﻟﺗﺣﻘق ﻣن أن اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ ﻓﻲ ﺣﻘل اﻟﺳﻌر‬
‫ھﻲ ﻣن اﻟﻧﻣط ‪ ، Integer‬وﻓﻲ ﺣﻘل ﺗﺎرﯾﺦ اﻟﻣﯾﻼد ﻣن اﻟﻧﻣط ‪ Date‬وھﻛذا ‪..‬‬
‫‪ .II‬ﻣﻘﺎرﻧﺔ اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﺑﻘﯾﻣﺔ أﺧرى ﻣﺣددة ﻣﺳﺑﻘﺎ ً ‪ ،‬ﻣﺛﻼ ً ﻋﻧد ﺑﻧﺎء ﻣوﻗﻊ ﻟﻠﻣزاﯾدة اﻟﻌﻠﻧﯾﺔ‬
‫ﯾﺟب أن ﺗﻛون اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ أﻋﻠﻰ ﻣن اﻟﻘﯾﻣﺔ اﻟﺑداﺋﯾﺔ ﻟﻠﻣزاد ‪.‬‬
‫‪ .III‬ﻣﻘﺎرﻧﺔ اﻟﻘﯾم اﻟﻣدﺧﻠﺔ ﻓﻲ ﺣﻘﻠﻲ إدﺧﺎل ) أداﺗﻲ ﺗﺣﻛم ‪ TextBox‬أو ﻏﯾرھﺎ( ﻛﻣﺎ ﻓﻲ ﺣﺎﻟﺔ‬
‫إدﺧﺎل ﻛﻠﻣﺔ اﻟﻣرور وإﻋﺎدة ﻛﺗﺎﺑﺗﮭﺎ ﻣرة أﺧرى ﻟﻠﺗﺄﻛﯾد ‪ ،‬أو ﻟﻠﺗﺣﻘق ﻣن أن ﺗﺎرﯾﺦ ﺑداﯾﺔ‬
‫اﻻﺟﺗﻣﺎع أﺻﻐر ﻣن ﺗﺎرﯾﺦ اﻧﺗﮭﺎﺋﮫ وھﻛذا ‪..‬‬

‫وﻣن ﺧﺻﺎﺋص أداة اﻟﺗﺣﻘق ‪: CompareValidator‬‬

‫‪ : ControlToValidate‬ﻟﺗﺣدﯾد أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه ‪.‬‬ ‫‪‬‬


‫‪ : ErrorMessage‬ﻟﺗﺣدﯾد رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﺣﺎل ﻋدم ﺗﺣﻘق اﻟﻘﯾد اﻟﻣﺣدد‬ ‫‪‬‬
‫ﺑﺎﻟﺧﺻﺎﺋص اﻷﺧرى ‪.‬‬
‫‪ : Operator‬ﻣﻌﺎﻣل اﻟﺗﺣﻘق ‪ ،‬أي ﻋﻣﻠﯾﺔ اﻟﻣﻘﺎرﻧﺔ اﻟﺗﻲ ﯾﺟب أن ﺗﺗﺣﻘق ) ﻣﺳﺎواة ‪ ،‬ﻋدم‬ ‫‪‬‬
‫ﻣﺳﺎواة ‪ ،‬أﻛﺑر ‪ ،‬أﺻﻐر ‪ ،‬أم اﻟﺗﺣﻘق ﻣن ﻧﻣط اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ ( ‪.‬‬
‫‪Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan,‬‬
‫‪LessThanEqual, DataTypeCheck.‬‬
‫‪ : ValueToCompare‬ﻗﯾﻣﺔ ﺛﺎﺑﺗﺔ ﻟﺗﺗم ﻣﻘﺎرﻧﺗﮭﺎ ﻣﻊ اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﺑﺄداة اﻟﺗﺣﻛم ‪.‬‬ ‫‪‬‬
‫‪ : ControlToCompare‬ﺗﺣدﯾد ‪ ID‬ﻷداة ﺗﺣﻛم أﺧرى ﻟﺗﺗم اﻟﻣﻘﺎرﻧﺔ ﺑﺎﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ‬ ‫‪‬‬
‫ﻓﯾﮭﺎ ‪.‬‬
‫‪ : Type‬ﻟﻠﺗﺣﻘق ﻣن أن اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ ھﻲ ﻣن ﻧﻣط ﻣﺣدد‪ .‬وﻣﻛن أن ﺗﺄﺧذ إﺣدى اﻟﻘﯾم‬
‫‪String , Integer , Double , Date, Currency .‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﻧﺳﺗﻌرض ﻓﻲ ھذا اﻟﻣﺛﺎل ﻛﯾﻔﯾﺔ اﻟﺗﺣﻘق ﻣن ﻧﻣط اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ ‪ ،‬ﺳﻧﻘوم ﺑﺈﻧﺷﺎء ﻧﻣوذج ﺑﺳﯾط ﻹدﺧﺎل‬
‫ﺗﺎرﯾﺦ اﻟﻣﯾﻼد و ﺳﺗظﮭر رﺳﺎﻟﺔ ﺧطﺄ إن ﻗﺎم اﻟﻣﺳﺗﺧدم ﺑﺈدﺧﺎل ﻗﯾﻣﺔ ﻣن ﻧﻣط ﺑﯾﺎﻧﺎت آﺧر ﻏﯾر ‪، Date‬‬
‫أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة‪،‬أﺿف أدوات اﻟﺗﺣﻛم ‪ Button،TextBox‬وأداة اﻟﺗﺣﻘق ‪CompareValidator‬‬
‫واﺿﺑط ﻓﯾﮭﺎ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ ‪:‬‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
‫‪TextBox1‬‬ ‫‪ControlToValidate‬‬
‫ﻧﻣط ﺑﯾﺎﻧﺎت ﺧﺎطﺊ‬ ‫‪ErrorMessage‬‬
‫‪date‬‬ ‫‪Type‬‬
‫‪DataTypeCheck‬‬ ‫‪Operator‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="‫"ﺧﺎطﺊ ﺑﯿﺎﻧﺎت ﻧﻤﻂ‬
ControlToValidate="TextBox1"
ForeColor="Red"
Operator="DataTypeCheck" Type="Date">
</asp:CompareValidator>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
‫<اﻟﻤﯿﻼد ﺗﺎرﯾﺦ‬br />
<asp:Button ID="Button1" runat="server" Text="‫ "اﻟﺒﯿﺎﻧﺎت إرﺳﺎل‬/>
</div>

‫ أﻣﺎ ﻟو أدﺧﻠت‬، ‫ ﺳﯾﺗم ﻗﺑول اﻟﺑﯾﺎﻧﺎت‬، ‫ واﺿﻐط ﻋﻠﻰ اﻟزر‬1/1/2000 ‫ﻧﻔذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ وأدﺧل‬
. ‫ﻗﯾﻣﺔ ﻣن ﻧﻣط ﺑﯾﺎﻧﺎت ﺧﺎطﺊ ﻓﺳﺗظﮭر رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﻣﺣددة‬

: ‫ﻣﺛﺎل ﻋن اﻟﻣﻘﺎرﻧﺔ ﻣﻊ ﻗﯾﻣﺔ ﺛﺎﺑﺗﺔ‬

١٠ ‫ﺳﻧﻘوم ﻓﻲ ھذا اﻟﻣﺛﺎل ﺑﺈﻧﺷﺎء ﻧﻣوذج ﺑﺳﯾط ﯾﺗم ﻓﯾﮫ ﻗﺑول اﻟدﺧل إذا ﻛﺎﻧت اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ أﻛﺑر ﻣن‬
‫ وأداة‬Button،TextBox ‫ أﺿف أدوات اﻟﺗﺣﻛم‬، ‫ أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة‬، ‫وإﻻ ﺳﺗظﮭر رﺳﺎﻟﺔ ﺧطﺄ‬
: ‫ واﺿﺑط ﻓﯾﮭﺎ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‬CompareValidator ‫اﻟﺗﺣﻘق‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
TextBox1 ControlToValidate
‫ﻗﯾﻣﺔ ﺧﺎطﺋﺔ‬ ErrorMessage
Integer Type
GreaterThan Operator
10 ValueToCompare

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="‫"ﺧﺎطﺌﺔ ﻗﯿﻤﺔ‬
ControlToValidate="TextBox1"
ForeColor="Red"
Operator="GreaterThan"
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

Type="Integer"
ValueToCompare="10">
</asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>

: ‫ﻣﺛﺎل ﻋن ﻣﻘﺎرﻧﺔ ﻗﯾم أدوات اﻟﺗﺣﻛم‬

‫ وھﻲ إﻋﺎدة ﻛﺗﺎﺑﺔ ﻛﻠﻣﺔ اﻟﻣرور‬، ‫ﺳﻧﻘوم ﻓﻲ ھذا اﻟﻣﺛﺎل ﺑﺗطﺑﯾق أﺣد اﺳﺗﺧداﻣﺎت أدوات اﻟﺗﺣﻘق اﻟﺷﺎﺋﻌﺔ‬
Button،TextBox1,TextBox2 ‫ أﺿف أدوات اﻟﺗﺣﻛم‬، ‫ أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة‬، ‫ﻟﻠﺗﺄﻛد ﻣن ﺻﺣﺗﮭﺎ‬
: ‫ واﺿﺑط ﻓﯾﮭﺎ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‬CompareValidator ‫وأداة اﻟﺗﺣﻘق‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
TextBox2 ControlToValidate
TextBox1 ControlToCompare
‫ﻛﻠﻣﺔ اﻟﻣرور وﺗﺄﻛﯾدھﺎ ﻏﯾر ﻣﺗطﺎﺑﻘﯾن‬ ErrorMessage
String Type
Equal Operator

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>
<asp:TextBox ID="TextBox1" runat="server" TextMode="Password">
</asp:TextBox>
‫<اﻟﻤﺮور ﻛﻠﻤﺔ أدﺧﻞ‬br />
<asp:TextBox ID="TextBox2" runat="server" TextMode="Password">
</asp:TextBox>
‫اﻟﻤﺮور ﻛﻠﻤﺔ ﻛﺘﺎﺑﺔ أﻋﺪ‬
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="‫"ﻣﺘﻄﺎﺑﻘﯿﻦ ﻏﯿﺮ وﺗﺄﻛﯿﺪھﺎ اﻟﻤﺮور ﻛﻠﻤﺔ‬
ControlToCompare="TextBox1"
ControlToValidate="TextBox2"
ForeColor="Red">
</asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="‫ "اﻟﺒﯿﺎﻧﺎت إرﺳﺎل‬/>
</div>

، ‫ﻧﻔذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ وﻗم ﺑﺈدﺧﺎل ﻛﻠﻣﺗﻲ ﻣرور ﻣﺧﺗﻠﻔﺗﯾن ﻓﻲ ﺣﻘﻠﻲ اﻹدﺧﺎل ﻟﺗظﮭر ﻟك رﺳﺎﻟﺔ اﻟﺧطﺄ‬
. ‫وھذا ﻣﺎ ﻧراه ﻋﺎدة ﻓﻲ اﻟﻣﻧﺗدﯾﺎت ﻋﻧد ﺗﺳﺟﯾل ﻋﺿوﯾﺔ ﺟدﯾدة‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫‪ : RegularExpressionValidator -٤‬ﻓﺣص اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ إن ﻛﺎﻧت ﺗﺗواﻓق ﻣﻊ ﺗﻌﺑﯾر ﻣﻧﺗظم‬


‫ﻣﺣدد أم ﻻ ‪ .‬وﻣن ﺧﺻﺎﺋﺻﮭﺎ ‪:‬‬
‫‪ : ControlToValidate ‬ﻟﺗﺣدﯾد أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه ‪.‬‬
‫‪ : ErrorMessage ‬ﻟﺗﺣدﯾد رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﺣﺎل ﻋدم ﺗواﻓق اﻟﻘﯾﻣﺔ‬
‫اﻟﻣدﺧﻠﺔ ﻣﻊ اﻟﺗﻌﺑﯾر اﻟﻣﻧﺗظم اﻟﻣﺣدد ‪.‬‬
‫‪ : ValidationExpression ‬ﻟﺗﺣدﯾد اﻟﺗﻌﺑﯾر اﻟﻣﻧﺗظم اﻟﻣراد ﺗطﺑﯾﻘﮫ ‪.‬‬

‫وﻟﻛن ﻣﺎھو اﻟﺗﻌﺑﯾر اﻟﻣﻧﺗظم ؟ ﺑﺈﯾﺟﺎز ‪ :‬ھو ﺻﯾﻐﺔ ﻛﺗﺎﺑﺔ ﺷﻲء ﻣﺎ ‪ .‬ﻓﻣن اﻟﻣﻌﻠوم ﻋﻠﻰ ﺳﺑﯾل اﻟﻣﺛﺎل أن‬
‫اﻟﺑرﯾد اﻹﻟﻛﺗروﻧﻲ ﯾﻣﻠك اﻟﺻﯾﻐﺔ اﻟﺗﺎﻟﯾﺔ ‪ xxxxx@xxxxxxx.xxx :‬أي أﻧﮫ ﯾﺗﺄﻟف ﻣن )اﺳم اﻟﺣﺳﺎب‬
‫@ اﺳم اﻟﺟﮭﺔ اﻟﻣﺳﺗﺿﯾﻔﺔ ‪ .‬اﻟﻧطﺎق ( وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن إﻧﻘﺎص أي ﺟزء ﻣن اﻟﺻﯾﻐﺔ اﻟﺳﺎﺑﻘﺔ ﯾؤدي‬
‫ﻟﻠﺣﺻول ﻋﻠﻰ ﺑرﯾد إﻟﻛﺗروﻧﻲ ﻏﯾر ﺻﺣﯾﺢ ‪ ،‬ﻣﺎﻧرﯾد ﻋﻣﻠﮫ ھو اﻟﺗﺣﻘق ﻣن أن اﻟﻣﺳﺗﺧدم أدﺧل ﻗﯾﻣﺔ‬
‫ﺗﺗواﻓق ﻣﻊ ﺻﯾﻐﺔ ﻣﺣددة ‪ ،‬ﯾﺗم ﺗﺣدﯾد اﻟﺻﯾﻐﺔ ﺑﻣﺎ ﯾدﻋﻰ ﺑﺎﻟﺗﻌﺑﯾر اﻟﻣﻧﺗظم‪ ،‬اﻟﺗﻌﺑﯾر اﻟﻣﻧﺗظم ﻟﻠﺑرﯾد‬
‫اﻻﻟﻛﺗروﻧﻲ ‪:‬‬

‫*)‪\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﺳﻧﻘوم ﻓﻲ ھذا اﻟﻣﺛﺎل ﺑﻌﻣل ﻧﻣوذج ﺑﺳﯾط ﻹدﺧﺎل اﻟﺑرﯾد اﻹﻟﻛﺗروﻧﻲ واﻟﺗﺣﻘق ﻣن ﺻﺣﺔ ﺻﯾﻐﺗﮫ ‪،‬‬
‫أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬أﺿف أدوات اﻟﺗﺣﻛم ‪ Button ، TextBox‬وأداة اﻟﺗﺣﻘق‬
‫‪ RegularExpressionValidator‬واﺿﺑط ﻓﯾﮭﺎ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ ‪:‬‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
‫‪TextBox1‬‬ ‫‪ControlToValidate‬‬
‫ﺻﯾﻐﺔ ﺑرﯾد إﻟﻛﺗروﻧﻲ ﻏﯾر ﺻﺣﯾﺣﺔ‬ ‫‪ErrorMessage‬‬
‫*)‪\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+‬‬ ‫‪ValidationExpression‬‬

‫ﻛود اﻟﺻﻔﺣﺔ ‪:‬‬

‫ﻛود ‪ASP.net‬‬
‫>‪<div‬‬
‫>‪<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox‬‬
‫اﻻﻟﻜﺘﺮوﻧﻲ ﺑﺮﯾﺪك أدﺧﻞ‬
‫>‪<br /‬‬
‫"‪<asp:RegularExpressionValidator ID="RegularExpressionValidator1‬‬
‫"‪runat="server‬‬
‫"ﺻﺤﯿﺤﺔ ﻏﯿﺮ ﺻﯿﻐﺔ"=‪ErrorMessage‬‬
‫"‪ControlToValidate="TextBox1" ForeColor="Red‬‬
‫>"*)‪ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫>‪</asp:RegularExpressionValidator‬‬
‫>‪<br /‬‬
‫>‪" /‬اﻟﺒﯿﺎﻧﺎت إرﺳﺎل"=‪<asp:Button ID="Button1" runat="server" Text‬‬
‫>‪</div‬‬

‫ﻧﻔذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ وﻻﺣظ ظﮭور رﺳﺎﻟﺔ اﻟﺧطﺄ ﻋﻧد إدﺧﺎﻟك ﻟﺑرﯾد إﻟﻛﺗروﻧﻲ ذو ﺻﯾﻐﺔ ﻏﯾر ﺻﺣﯾﺣﺔ‬

‫اﻟﻣزﯾد ﺣول اﻟﺗﻌﺎﺑﯾر اﻟﻣﻧﺗظﻣﺔ ‪:‬‬

‫ﻋﻧﺎوﯾن اﻟﺑرﯾد اﻹﻟﻛﺗروﻧﻲ ﻟﯾﺳت اﻷﻣر اﻟوﺣﯾد اﻟذي ﯾﺧﺿﻊ ﻟﻘواﻋد اﻟﺗﻌﺎﺑﯾر اﻟﻣﻧﺗظﻣﺔ ‪ ،‬ﻓﺄرﻗﺎم‬
‫اﻟﮭواﺗف ‪ ،‬أرﻗﺎم اﻟﺿﻣﺎن اﻻﺟﺗﻣﺎﻋﻲ ‪ ،‬ﻋﻧﺎﻧوﯾن ﻣواﻗﻊ اﻻﻧﺗرﻧت ‪ ....‬إﻟﺦ ﺟﻣﯾﻌﮭم ﯾﺧﺿﻌون ﻷﺳﻠوب‬
‫ﻛﺗﺎﺑﺔ ﻣﺣدد ﺑواﺳطﺔ اﻟﺗﻌﺎﺑﯾر اﻟﻣﻧﺗظﻣﺔ ‪ .‬ﺗﺣﺗوي ﻣﻧﺻﺔ اﻟﻌﻣل ‪ Visual Studio‬ﻋﻠﻰ ﺻﯾﻎ اﻟﺗﻌﺎﺑﯾر‬
‫اﻟﻣﻧﺗظﻣﺔ اﻷﻛﺛر ﺷﯾوﻋﺎ ً ‪ ،‬ﻛﻣﺎ ﯾوﺟد اﻟﻌدﯾد ﻣن ﻣواﻗﻊ اﻻﻧﺗرﻧت اﻟﺗﻲ ﺗﻘدم ھذه اﻟﺧدﻣﺔ وﻣن أھﻣﮭﺎ ‪:‬‬

‫‪http://regexlib.com‬‬

‫‪ : CustomValidator -٥‬إن ﻟم ﺗؤدي أﯾﺎ ً ﻣن أدوات اﻟﺗﺣﻘق اﻟﺳﺎﺑﻘﺔ وظﯾﻔﺔ اﻟﺗﺣﻘق اﻟﺗﻲ ﺗرﯾدھﺎ‬
‫ﻓﺑﺈﻣﻛﺎﻧك ﺗﺻﻣﯾم أﺳﻠوب اﻟﺗﺣﻘق اﻟﺧﺎص ﺑك وذﻟك ﺑﺎﺳﺗﺧدام اﻷداة ‪ CustomValidator‬وﻣن‬
‫اﻟﺧﺻﺎﺋص اﻟﮭﺎﻣﺔ ﻷداة اﻟﺗﺣﻘق ھذه ‪:‬‬
‫‪ : ControlToValidate ‬ﻟﺗﺣدﯾد أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق ھذه ‪.‬‬
‫‪ : ErrorMessage ‬ﻟﺗﺣدﯾد رﺳﺎﻟﺔ اﻟﺧطﺄ اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﺣﺎل ﻋدم ﺗواﻓق اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ‬
‫ﻣﻊ ﻗﯾد اﻟﺗﺣﻘق اﻟﻣﺣدد ‪.‬‬
‫‪ : ClientValidationFunction ‬اﺳم ﺗﺎﺑﻊ )‪ ( function‬اﻟﺗﺣﻘق اﻟذي ﺳﯾﺗم ﺗطﺑﯾﻘﮫ ﻋﻠﻰ‬
‫ﺟﺎﻧب اﻟﻌﻣﯾل ) ‪. ( ClientSide‬‬

‫ﻛﻣﺎ أن أداة اﻟﺗﺣﻘق ‪ CustomValidator‬ﺗدﻋم اﻟﺣدث ‪ ServerValidate‬واﻟذي ﯾﺗم إطﻼﻗﮫ‬


‫ﻋﻧد ﺑدء ﻋﻣل أداة اﻟﺗﺣﻘق ھذه ‪.‬‬

‫ﯾﺗم ﺗطﺑﯾق ﺗﺎﺑﻊ اﻟﺗﺣﻘق ﻋﻧد إطﻼق اﻟﺣدث ‪. ServerValidate‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﻟو أردﻧﺎ ﻣﺛﻼ ً ﺟﻌل دﺧل اﻟﻣﺳﺗﺧدم ﻻ ﯾﺗﺟﺎوز ‪ ١٠‬أﺣرف ‪ ،‬وإﻻ ﺳﺗظﮭر رﺳﺎﻟﺔ ﺧطﺄ ﺗﺧﺑر اﻟﻣﺳﺗﺧدم‬
‫ﺑﺄﻧﮫ ﺗﺟﺎوز اﻟطول اﻟﻣﺳﻣوح ﺑﮫ ‪ .‬أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬أﺿف أدوات اﻟﺗﺣﻛم ‪Button ، TextBox‬‬
‫وأداة اﻟﺗﺣﻘق ‪ CustomValidator‬واﺿﺑط ﻓﯾﮭﺎ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ ‪:‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬
TextBox1 ControlToValidate
‫ﺗﺟﺎوزت اﻟطول اﻟﻣﺳﻣوح ﺑﮫ‬ ErrorMessage

: ‫ ﻓﺎﻛﺗب اﻟﻛود اﻟﺗﺎﻟﻲ‬CustomValidator ‫ اﻟﺧﺎص ﺑﺎﻷداة‬ServerValidate ‫أﻣﺎ ﻓﻲ اﻟﺣدث‬

C# ‫ﻛود‬
protected void CustomValidator1_ServerValidate(object source,
ServerValidateEventArgs args)
{
if (args.Value.Length > 10)
args.IsValid = false;
else
args.IsValid = true;
}

VB ‫ﻛود‬
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal
args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles
CustomValidator1.ServerValidate

If args.Value.Length > 10 Then


args.IsValid = False
Else
args.IsValid = True
End If
End Sub

ServerValidateEventArgs ‫ ( ﻓﻲ اﻟداﻟﺔ اﻟﺳﺎﺑﻘﺔ ھو ﻏرض ﻣن اﻟﺻف‬args ) ‫اﻟﺑﺎراﻣﺗر اﻟﺛﺎﻧﻲ‬


: ‫ﺣﯾث ﯾﻣﻠك اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‬

. CustomValidator ‫ ﺗﻣﺛل اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﻓﻲ أداة اﻟﺗﺣﻛم اﻟﻣرﺗﺑطﺔ ﺑﺄداة اﻟﺗﺣﻘق‬: Value 
. ‫ ﺗﺣدد ھل ﺗم ﺗﺟﺎوز ﺷرط اﻟﺗﺣﻘق ﺑﻧﺟﺎح أم ﻓﺷل‬: IsValid 
‫ ﺗﺣدد ھل ﯾﺗم ﺗطﺑﯾق ﺗﺎﺑﻊ اﻟﺗﺣﻘق اذا ﻟم ﯾدﺧل اﻟﻣﺳﺗﺧدم أي ﻗﯾﻣﺔ‬: ValidateEmptyText 
. ‫ﻓﻲ ﺣﻘل اﻹدﺧﺎل أم ﻻ‬

‫ ﻣﺣﺎرف ﯾﺗم إﻋطﺎء اﻟﺧﺎﺻﯾﺔ‬١٠ ‫ﻓﻲ اﻟﻛود اﻟﺳﺎﺑق ﻗﻣﻧﺎ ﺑﻔﺣص طول اﻟﻘﯾﻣﺔ اﻟﻣدﺧﻠﺔ ﻓﺈن ﺗﺟﺎوزت‬
‫ وﺗﺟﺎوز اﺧﺗﺑﺎر‬true ‫ ) أي ﻓﺷل اﺧﺗﺑﺎر اﻟﺗﺣﻘق ( وإﻻ ﯾﺗم إﻋطﺎﺋﮫ اﻟﻘﯾﻣﺔ‬false ‫ اﻟﻘﯾﻣﺔ‬IsValid
. ‫اﻟﺗﺣﻘق ﺑﻧﺟﺎح‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫ﻛود اﻟﺻﻔﺣﺔ ‪:‬‬

‫ﻛود ‪ASP.net‬‬
‫>‪<div‬‬
‫>‪<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox‬‬
‫"‪<asp:CustomValidator ID="CustomValidator1" runat="server‬‬
‫"ﺑﮫ اﻟﻤﺴﻤﻮح اﻟﻄﻮل ﺗﺠﺎوزت"=‪ErrorMessage‬‬
‫"‪ControlToValidate="TextBox1‬‬
‫"‪ForeColor="Red‬‬
‫>"‪onservervalidate="CustomValidator1_ServerValidate‬‬
‫>‪</asp:CustomValidator‬‬
‫>‪<br /‬‬

‫>‪" /‬اﻟﺒﯿﺎﻧﺎت إرﺳﺎل"=‪<asp:Button ID="Button1" runat="server" Text‬‬


‫>‪</div‬‬

‫إن ﻛود ‪ C#‬أو ‪ VB‬اﻟﺳﺎﺑق ﻣوﺟود ﻋﻠﻰ اﻟﺳﯾرﻓر وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻣن دﺧل اﻟﻣﺳﺗﺧدم ﺳﺗﺗم‬
‫ﻋﻠﻰ اﻟﺟﺎﻧب اﻟﺳﯾرﻓر وھذا ﯾﺗطﻠب إرﺳﺎل ﺑﯾﺎﻧﺎت اﻟﺻﻔﺣﺔ ﻣﻣﺎ ﯾؤدي إﻟﻰ ﺑطﺊ ﻓﻲ ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ‪،‬‬
‫ﺑﺈﻣﻛﺎﻧﻧﺎ ﺟﻌل ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﺗﺗم ﻋﻠﻰ ﺟﺎﻧب اﻟﻣﺳﺗﺧدم واﻟﺳرﻓر ﻣﻌﺎ ً وذﻟك ﺣﯾث ﻧﺳﺗﻔﺎد ﻣن ﺳرﻋﺔ‬
‫اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎ ﻧب اﻟﻣﺳﺗﺧدم وﻣن ﺳﻼﻣﺔ ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق وﺿﻣﺎﻧﮭﺎ ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر ‪ ،‬ﯾﺗم اﻟﺗﺣﻘق‬
‫ﻋﻠﻰ ﺟﺎﻧب اﻟﻣﺳﺗﺧدم ﺑواﺳطﺔ ﻟﻐﺔ اﻟﺟﺎﻓﺎﺳﻛرﯾﺑت ‪ ،‬ﺣﯾث ﺗﺗم إﺿﺎﻓﺔ داﻟﺔ اﻟﺗﺣﻘق ﻓﻲ ﺻﻔﺣﺔ ‪ASP‬‬
‫وھذا ﻣﺎﺳﯾﺗﺿﺢ ﻣن ﺧﻼل اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ ‪.‬‬

‫ﻣﺛﺎل ﻋن اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل‬

‫أﻋد ﺗطﺑﯾق اﻟﻣﺛﺎل اﻟﺳﺎﺑق وأﺿف ﻓﻲ ﺻﻔﺣﺔ ‪ ASP‬داﻟﺔ اﻟﺟﺎﻓﺎﺳﻛرﺑت اﻟﺗﺎﻟﯾﺔ ) ﺣﯾث ﺗﺗم إﺿﺎﻓﺔ أﻛود‬
‫اﻟﺟﺎﻓﺎﺳﻛرﺑت ﺑﯾن وﺳﻣﻲ >‪ <head>…. </head‬أﻋﻠﻰ اﻟﺻﻔﺣﺔ ( اﻟﻛود ‪:‬‬

‫ﻛود ‪JavaScript‬‬
‫>"‪<head runat="server‬‬
‫>‪<title></title‬‬
‫>"‪<script type="text/javascript‬‬
‫)‪function My_ClientValidate(source, args‬‬
‫{‬
‫)‪if (args.Value.length > 10‬‬
‫;‪args.IsValid = false‬‬
‫‪else‬‬
‫;‪args.IsValid = true‬‬
‫}‬
‫>‪</script‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫‪ . . . .‬ﺑﺎﻗﻲ ﻛود اﻟﺻﻔﺣﺔ ‪. . . . . .‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫ﺑﻌد اﻹﺿﺎﻓﺔ اﻟﺳﺎﺑﻘﺔ ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ وأدﺧل ﻧص أطول ﻣن ‪ ١٠‬ﻣﺣﺎرف ﺛم اﺿﻐط ﻋﻠﻰ اﻟزر ‪،‬‬
‫ﺳوف ﺗظﮭر رﺳﺎﻟﺔ اﻟﺧطﺄ ‪ ،‬وﻟﻛن ﻻﺣظ ﻋدم إﻋﺎدة ﺗﺣﻣﯾل اﻟﺻﻔﺣﺔ ) ﻋدم ظﮭور ﺷرﯾط اﻟﺗﺣﻣﯾل‬
‫أﺳﻔل اﻟﻣﺗﺻﻔﺢ ( وھذا ﯾﻌﻧﻲ أن اﻟﺻﻔﺣﺔ ﻟم ﺗرﺳل ﻟﻠﺳﯾرﻓر ﺑﻌد ‪ ،‬وأن ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻗد ﺗﻣت ﻋﻠﻰ‬
‫طرف اﻟﻣﺳﺗﺧدم ‪ ،‬وﻓﻲ ھذا ﺳرﻋﺔ أﻛﺑر وﺗﺧﻔﯾف ﻣن اﻟﻌبء ﻋﻠﻰ اﻟﺳﯾرﻓر ‪.‬‬

‫اﻷﻣن‬ ‫اﻟﺳرﻋﺔ‬ ‫طرف اﻟﺗﺣﻘق‬


‫ﻗﺎﺑل ﻟﻼﺧﺗراق ﺑﺷﻛل أﺳﮭل‬ ‫ﺳرﻋﺔ أﻛﺑر‬ ‫اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻣﺳﺗﺧدم‬
‫ﻗﺎﺑﻠﯾﺔ اﺧﺗراق ﺻﻌﺑﺔ ﺟدا‬ ‫ﺳرﻋﺔ أﻗل‬ ‫اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر‬

‫وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن اﻟﺣل اﻷﻓﺿل ھو اﻟﺗﺣﻘق ﻋﻠﻰ ﻛﻼ اﻟﺟﺎﻧﺑﯾن ﻣﻌﺎ ً ﻛﻣﺎ ﻓﻌﻠﻧﺎ ﻓﻲ اﻟﻣﺛﺎل اﻟﺳﺎﺑق وﺑﮭذا‬
‫ﻧﺿﻣن ﻣزاﯾﺎ ﻛﻼ اﻷﺳﻠوﺑﯾن وﻧﺗﺟﺎوز ﻋﯾوﺑﮭﻣﺎ ‪.‬‬

‫‪ : ValidationSummary -٦‬إظﮭﺎر ﻣﻠﺧص ﺑﺟﻣﯾﻊ أﺧطﺎء اﻟﺗﺣﻘق اﻟﺗﻲ ﺗم اﻛﺗﺷﺎﻓﮭﺎ ﻓﻲ اﻟﺻﻔﺣﺔ‬


‫ھذا اﻷﻣر ﻣﻔﯾد ﻋﻧد اﻟﺗﻌﺎﻣل ﻣﻊ ﻧﻣﺎذج إدﺧﺎل طوﯾﻠﺔ ‪ ،‬ﺣﯾث ﯾﺗم ﻋرض ﺟﻣﯾﻊ اﻷﺧطﺎء اﻟﺣﺎﺻﻠﺔ‬
‫أﺳﻔل اﻟﺻﻔﺣﺔ ) أو ﻓﻲ أي ﻣﻛﺎن ﺗرﻏب ﺑﮫ (‪ .‬ﻣن ﺧﻼل ﺗﻌﺎﻣﻠك ﻣﻊ أدوات اﻟﺗﺣﻘق اﻟﺳﺎﺑﻘﺔ ﻻﺑد‬
‫وأﻧك ﻻﺣظت أﻧﮭم ﺟﻣﯾﻌﺎ ً ﯾﻣﺗﻠﻛون اﻟﺧﺎﺻﯾﺔ ‪ ErrorMessage‬واﻟﺧﺎﺻﯾﺔ ‪ ، Text‬اﻟﻔرق ﺑﯾﻧﮭﻣﺎ‬
‫ھو اﻟﻘﯾﻣﺔ اﻟﻣﺧﺻﺻﺔ ﻟـ ‪ ErrorMessage‬ﯾﺗم إرﺳﺎﻟﮭﺎ أﯾﺿﺎ ً ﻛرﺳﺎﻟﺔ ﺧطﺄ ﻟﻸداة‬
‫‪ ، ValidationSummary‬ﻓﻲ ﺣﯾن اﻟﻘﯾم اﻟﻣﺳﻧدة ﻟﻠﺧﺎﺻﯾﺔ ‪ Text‬ﺗظﮭر ﻛﺟزء ﻣن اﻟﺻﻔﺣﺔ‬
‫ﻧﻔﺳﮭﺎ وﯾﻔﺿل أن ﺗﻛون ﻗﺻﯾرة ‪ ،‬ﻓﻲ ﺣﯾن ﺗﺣﺗوي ‪ ErrorMessage‬ﻋﻠﻰ ﺗﻔﺻﯾل أﻛﺛر‪ .‬ﻋﻠﻰ‬
‫اﻟﻌﻣوم ‪ ،‬إن ﻟم ﺗﺳﻧد ﻗﯾﻣﺔ ﻟﻠﺧﺎﺻﯾﺔ ‪ Text‬ﻓﺈن اﻟﺧﺎﺻﯾﺔ ‪ ErrorMessage‬ﺳﺗﻌﻣل ﻋﻣﻠﮭﺎ وﺗﻘوم‬
‫ﺑﻌرض ﻗﯾﻣﺗﮭﺎ ﻛﺟزء ﻣن اﻟﺻﻔﺣﺔ ) وھذا ﻣﺎ ﻛﻧﺎ ﻧﻘوم ﺑﮫ ﻓﻲ اﻷﻣﺛﻠﺔ اﻟﺳﺎﺑﻘﺔ ( ‪ .‬ﻟﻠﺗوﺿﯾﺢ أﻛﺛر‬
‫ﺣول ھذه اﻟﻧﻘﺎط دﻋﻧﺎ ﻧطﺑق اﻟﻣﺛﺎل اﻟﺗﺎﻟﻲ ‪:‬‬

‫ﻣﺛﺎل ‪:‬‬

‫ﺳﻧﻘوم ﻓﻲ ھذا اﻟﻣﺛﺎل ﺑﺎﻟﺗﻌﺎﻣل ﻣﻊ ﻛﻼ اﻟﺧﺎﺻﯾﺗﯾن ‪ ErrorMessage, Text‬وذﻟك ﺑﻐﯾﺔ ﺗوﺿﯾﺢ‬


‫وظﯾﻔﺔ ﻛﻼ ً ﻣﻧﮭﻣﺎ ‪ ،‬أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬أﺿف أدوات اﻟﺗﺣﻛم واﺿﺑط ﺧﺻﺎﺋﺻﮭﺎ ﻛﻣﺎ ھو ﻣوﺿﺢ‬
‫ﻓﻲ اﻟﺟدول اﻟﺗﺎﻟﻲ ‪ ) :‬وھو ﻧﻣوذج ﺑﺳﯾط ﯾطﻠب ﻣن اﻟﻣﺳﺗﺧدم ادﺧﺎل اﺳﻣﮫ وﻛﻠﻣﺔ اﻟﻣرور (‬

‫اﻟﻘﯾﻣﺔ‬ ‫اﻟﺧﺎﺻﯾﺔ‬ ‫اﺳم اﻷداة‬


‫‪TextBox1‬‬
‫‪TextBox2‬‬
‫إرﺳﺎل اﻟﺑﯾﺎﻧﺎت‬ ‫‪Text‬‬
‫*‬ ‫‪Text RequiredFieldValidator1‬‬
‫ﻟم ﺗﻘم ﺑﺈدﺧﺎل اﺳﻣك‬ ‫‪ErrorMessage RequiredFieldValidator1‬‬
‫‪TextBox1‬‬ ‫‪ControlToValidate RequiredFieldValidator1‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

* Text RequiredFieldValidator2
‫ﻟم ﺗﻘم ﺑﺈدﺧﺎل ﻛﻠﻣﺔ اﻟﻣرور‬ ErrorMessage RequiredFieldValidator2
TextBox2 ControlToValidate RequiredFieldValidator2

‫ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ واﺿﻐط ﻋﻠﻰ اﻟزر دون أن ﺗدﺧل أي‬
ً ‫ ﺳﺗﻼﺣظ ظﮭور اﻟرﻣز * ﺑﺟﺎﻧب ﻛﻼ‬، ‫ﺑﯾﺎﻧﺎت ﻓﻲ ﺣﻘول اﻹدﺧﺎل‬
‫ ﻛﻣﺎ‬، Text ‫ﻣن ﺣﻘﻠﻲ اﻹدﺧﺎل وھﻲ اﻟﻘﯾﻣﺔ اﻟﻣﺣددة ﺑﺎﻟﺧﺎﺻﯾﺔ‬
‫ﺳﺗﻼﺣظ أﺳﻔل اﻟﺻﻔﺣﺔ ظﮭور رﺳﺎﻟﺗﻲ اﻟﺧطﺄ اﻟﻣﺣددﺗﯾن ﺑﺎﻟﺧﺎﺻﯾﺔ‬
‫ ﺣﯾث ﯾﺗم‬، ‫ ﻟﻛﻼً ﻣن أداة اﻟﺗﺣﻘق اﻷوﻟﻰ واﻟﺛﺎﻧﯾﺔ‬ErrorMessage
‫ ﻛﻣﺎ ھو‬. ‫ﻋرﺿﮭﻣﺎ ﻛﺟزء ﻣن اﻷداة‬
. ‫واﺿﺢ ﻓﻲ اﻟﺻورة‬

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>

<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>


<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="‫"اﺳﻤﻚ ﺑﺈدﺧﺎل ﺗﻘﻢ ﻟﻢ‬
ForeColor="Red">*</asp:RequiredFieldValidator>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="‫"اﻟﻤﺮور ﻛﻠﻤﺔ ﺑﺈدﺧﺎل ﺗﻘﻢ ﻟﻢ‬
ForeColor="Red">*</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="‫ "اﻟﺒﯿﺎﻧﺎت إرﺳﺎل‬/>
<br />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />

</div>

: ‫ ﺗدﻋم اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ‬ValidationSummary ‫ﻛﻣﺎ أن اﻷداة‬

‫ وﺗﺄﺧذ‬... ‫ ﻣﺛﻼ ً ﻛﻘﺎﺋﻣﺔ أم ﻓﻘرة‬، ‫ ﻟﺗﺣدﯾد أﺳﻠوب ﻋرض رﺳﺎﺋل اﻷﺧطﺎء‬: DisplayMode 
. List , BulletList , SingleParagraph : ‫إﺣدى اﻟﻘﯾم‬
. ‫ ﻟﺗﺣدﯾد ﻋﻧوان ﯾظﮭر أﻋﻠﻰ رﺳﺎﺋل اﻟﺧطﺄ اﻟﻣﻌروﺿﺔ ﻓﻲ ھذه اﻷداة‬: HeaderText 
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫‪ : ShowMessageBox ‬ﺗﻣﻛﻧﻧﺎ ﻣن إظﮭﺎر اﻷﺧطﺎء ﻛﺻﻧدوق رﺳﺎﻟﺔ ﻣﻧﺑﺛق ﻛﻣﺎ ﻓﻲ‬


‫ﺗطﺑﯾﻘﺎت وﯾﻧدوز ‪.‬‬
‫‪ : ShowSummary ‬إظﮭﺎر أو إﺧﻔﺎء ھذه اﻷداة ‪.‬‬

‫ﺗﻣرﯾن ﻏﯾر ﻣﺣﻠول ‪:‬‬

‫ﻗم ﺑﺑﻧﺎء ﻧﻣوذج ﺷﺑﯾﮫ إﻟﻰ ﺣد ﻣﺎ ﺑﻧﻣوذج إﻧﺷﺎء ﺑرﯾد إﻟﻛﺗروﻧﻲ ﺟدﯾد وﻗم ﺑﺗطﺑﯾق ﻗﯾود اﻟﺗﺣﻘق ﻋﻠﻰ‬
‫ﻣدﺧﻼت اﻟﻣﺳﺗﺧدم ‪ ،‬ﺑﺎﻟﺷﻛل اﻟﺗﺎﻟﻲ ‪:‬‬

‫اﻟﻘﯾد‬ ‫اﺳم اﻟﺣﻘل‬


‫ﻏﯾر ﻓﺎرغ‬ ‫اﺳم اﻟﻣﺳﺗﺧدم‬
‫ﻏﯾر ﻓﺎرغ ‪ ،‬ﺻﯾﻐﺔ ﺑرﯾد إﻟﻛﺗروﻧﻲ ﻧظﺎﻣﯾﺔ‬ ‫اﻟﺑرﯾد اﻹﻟﻛﺗروﻧﻲ اﻟﻣراد إﻧﺷﺎؤه‬
‫ﻏﯾر ﻓﺎرغ ‪ ،‬ﻻ ﺗﺗﺟﺎوز ‪ ١٦‬ﻣﺣرف‬ ‫ﻛﻠﻣﺔ اﻟﻣرور‬
‫ﯾﺟب أن ﺗطﺎﺑق ﻛﻠﻣﺔ اﻟﻣرور‬ ‫ﺗﺄﻛﯾد ﻛﻠﻣﺔ اﻟﻣرور‬

‫واﺟﻌل رﺳﺎﺋل اﻟﺧطﺄ ﺗظﮭر ﻛﻘﺎﺋﻣﺔ أﺳﻔل اﻟﺻﻔﺣﺔ وﺑﺎﻟﻠون اﻷﺣﻣر ‪.‬‬

‫ﻣﻼﺣظﺔ‬

‫ﯾﻣﻛن ﻟﻠﺧﺎﺻﯾﺔ ‪ Text‬أن ﺗﻘﺑل ﻛود ‪ HTML‬ﻛدﺧل ﻟﮭﺎ ‪ ،‬وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈﻧﮫ ﻣن اﻟﻣﻣﻛن إظﮭﺎر ﺻورة‬
‫ﺻﻐﯾرة ﺑﺟﺎﻧب ﻛل ﺣﻘل ﯾﺧﺎﻟف ﺷرط اﻟﺗﺣﻘق وذﻟك ﺑدﻻ ً ﻣن اﻹﻛﺗﻔﺎء ﺑﺈظﮭﺎر رﺳﺎﻟﺔ ﺗوﺿﯾﺣﯾﺔ ﻛﻣﺎ‬
‫ﻓﻌﻠﻧﺎ ﻓﻲ اﻷﻣﺛﻠﺔ اﻟﺳﺎﺑﻘﺔ ‪.‬‬
‫إن ﻛﻧت ﻣﮭﺗﻣﺎ ً ﺑﮭذه اﻟﻧﻘطﺔ ‪ ،‬ﻗم ﺑﺎﻟﻌودة ﻷﺣد اﻷﻣﺛﻠﺔ اﻟﺳﺎﺑﻘﺔ واﻋط اﻟﺧﺎﺻﯾﺔ ‪ Text‬ﻷﺣد أدوات‬
‫اﻟﺗﺣﻘق اﻟﻘﯾﻣﺔ اﻟﺗﺎﻟﯾﺔ ‪:‬‬
‫”>‪Text=”<img src=’Error.gif’ alt=’Required’ /‬‬
‫ﻣﻊ اﻷﺧذ ﺑﻌﯾن اﻻﻋﺗﺑﺎر وﺟود اﻟﺻورة اﻟﻣطﻠوﺑﺔ واﺳﻣﮭﺎ وﻣﺳﺎرھﺎ واﻣﺗدادھﺎ ‪.‬‬

‫أدوات اﻟﺗﺣﻘق واﻟﺟﺎﻓﺎﺳﻛرﺑت‬

‫ﺑﺷﻛل اﻓﺗراﺿﻲ ‪ ،‬ﻓﺈن أدوات اﻟﺗﺣﻘق اﻟﺗﻲ ﺗﻌرﻓﻧﺎ ﻋﻠﯾﮭﺎ ﺗﻘوم ﺑﻌﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﻛﻼ اﻟﺟﺎﻧﺑﯾن )‬
‫اﻟﺳﯾرﻓر واﻟﻌﻣﯾل ( ‪ ،‬ﻓﻌﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل ﺗﺗم ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﻣﺳﺗوى ﻣﺗﺻﻔﺢ اﻻﻧﺗرﻧت وﺑﺎﺳﺗﺧدام‬
‫ﻟﻐﺔ اﻟﺟﺎﻓﺎﺳﻛرﺑت ‪ ،‬اﻹﺻدارات ﻗﺑل ‪ ASP.net 3.5‬ﻛﺎﻧت ﺗدﻋم اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل ﻓﻘط ﻋﻧد‬
‫اﺳﺗﺧدام اﻟﻣﺗﺻﻔﺢ ‪ ، Internet Explorer‬أﻣﺎ اﻹﺻدارات اﻟﺣدﯾﺛﺔ ﻓﺄﺻﺑﺣت ﻣدﻋوﻣﺔ ﻣن ﻗﺑل‬
‫ﻣﺗﺻﻔﺣﺎت ﻋدﯾدة ‪ Firefox , Opera‬ﺑﺎﻹﺿﺎﻓﺔ طﺑﻌﺎ ً ﻟـ ‪ Internet Explorer‬وﻏﯾرھم ‪ .‬وﻓﻲ‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫ﺣﺎل ﻟم ﯾدﻋم اﻟﻣﺗﺻﻔﺢ اﻟﻣﺳﺗﺧدم ﻟﻐﺔ اﻟﺟﺎﻓﺎﺳﻛرﺑت ﻓﺈن أدوات اﻟﺗﺣﻘق ﺳﺗﻛﺗﻔﻲ ﺑﺈﺟراء ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق‬
‫ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر ﻓﻘط ﺣﯾث ﻟن ﺗﻛون ﻗﺎدرة ﻋﻠﻰ اﻟﻌﻣل ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل ‪.‬‬

‫ﻋﻠﻰ اﻟﻌﻣوم ‪ ،‬ﻓﺈن إﺟراء ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﻛﻼ اﻟﺟﺎﻧﺑﯾن ﯾﻌد اﻟﺣل اﻷﻓﺿل ﻛﻣﺎ أﺳﻠﻔﻧﺎ ﻓﻲ ﻓﻘرة‬
‫ﺳﺎﺑﻘﺔ ‪ ،‬ﺣﯾث ﻧﺳﺗﻔﺎد ﻣن ﺳرﻋﺔ إﺟراء اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل ﺑﺎﻹﺿﺎﻓﺔ ﻟﺿﻣﺎن ﺳﻼﻣﺔ اﻟﻌﻣﻠﯾﺔ‬
‫وﻋدم اﻟﺗﻼﻋب ﺑﮭﺎ ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر ‪.‬‬

‫أﺧﯾرا ً ‪ ،‬ﺑﺈﻣﻛﺎﻧك إن ﺷﺋت إﻟﻐﺎء ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل واﻹﻛﺗﻔﺎء ﺑﺈﺟراﺋﮭﺎ ﻋﻠﻰ ﺟﺎﻧب‬
‫اﻟﺳﯾرﻓر وذﻟك ﺑﺈﺳﻧﺎد اﻟﻘﯾﻣﺔ ‪ False‬ﻟﻠﺧﺎﺻﯾﺔ ‪ EnableClientScript‬اﻟﻣوﺟودة ﻣﻊ ﺟﻣﯾﻊ أدوات‬
‫اﻟﺗﺣﻘق اﻟﺳﺎﺑﻘﺔ ‪.‬‬

‫اﻟﺗﻌﺎﻣل ﻣﻊ اﻟﺧﺎﺻﯾﺔ ‪Page.IsValid‬‬

‫ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق ﺗﻣﺗﻠك اﻟﺧﺎﺻﯾﺔ ‪ IsValid‬واﻟﺗﻲ ﺗﻌﯾد اﻟﻘﯾﻣﺔ ‪ True‬اذا ﻛﺎﻧت اﻟﺑﯾﺎﻧﺎت اﻟﻣدﺧﻠﺔ‬
‫ﻣواﻓﻘﺔ ﻟﺷرط اﻟﺗﺣﻘق اﻟﻣطﻠوب وإﻻ ﻓﺈﻧﮭﺎ ﺗﻌﯾد اﻟﻘﯾﻣﺔ ‪ ، False‬اﻟﺻﻔﺣﺔ ) ‪ ( Page‬ﺗﻣﺗﻠك أﯾﺿﺎ ً‬
‫اﻟﺧﺎﺻﯾﺔ ‪ IsValid‬واﻟﺗﻲ ﺗﻌﯾد ‪ True‬اذا وﻓﻘط اذا أﻋﺎدت ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ﺗﻠك‬
‫اﻟﺻﻔﺣﺔ اﻟﻘﯾﻣﺔ ‪ ) True‬أي إن ﻟم ﯾﻛن ھﻧﺎك أي أﺧطﺎء ﻓﻲ دﺧل اﻟﻣﺳﺗﺧدم ( ‪ ،‬ﻋﻠﻰ اﻟﻌﻣوم ﻓﺈن‬
‫اﻟﺧﺎﺻﯾﺔ اﻟﺳﺎﺑﻘﺔ ﺗﻌﻣل ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن ﻛﺎﻧت ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻣن اﻟﻣدﺧﻼت ﺗﺗم ﻋﻠﻰ‬
‫ﻛﻼ اﻟﺟﺎﻧﺑﯾن ) ﺳﯾرﻓر – ﻋﻣﯾل ( ﻓﻼ داﻋﻲ ﻻﺳﺗﺧداﻣﮭﺎ ‪ ،‬وذﻟك ﻷن ﺑﯾﺎﻧﺎت اﻟﺻﻔﺣﺔ ﻟن ﺗرﺳل أﺳﺎﺳﺎ‬
‫إﻟﻰ اﻟﺳﯾرﻓر ﺣﺗﻰ ﺗﺟﺗﺎز اﺧﺗﺑﺎر اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل وﻓﻲ ھذه اﻟﺣﺎﻟﺔ ﻓﺈن ‪Page.IsValid‬‬
‫ﺳﺗﻌﯾد ﺣﺗﻣﺎ ً ‪ ، True‬أﻣﺎ إن ﺗم إﯾﻘﺎف ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل ) أو ﻛﺎن اﻟﻣﺗﺻﻔﺢ اﻟﻣﺳﺗﺧدم‬
‫ﻻﯾدﻋم اﻟﺟﺎﻓﺎﺳﻛرﺑت ( ﻋﻧدﺋذ ﯾﺻﺑﺢ اﺳﺗﺧدام اﻟﺧﺎﺻﯾﺔ اﻟﺳﺎﺑﻘﺔ ﺿرورﯾﺎ ً ‪.‬‬

‫إﻋداد ﺧﺎﺻﯾﺔ اﻟﻌرض ‪Display‬‬

‫ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق اﻟﺳﺎﺑﻘﺔ ﺗﻣﺗﻠك اﻟﺧﺎﺻﯾﺔ ‪ Display‬واﻟﺗﻲ ﺗﺣدد آﻟﯾﺔ ﻋرض رﺳﺎﻟﺔ اﻟﺧطﺄ ﻋﻠﻰ‬
‫اﻟﺻﻔﺣﺔ ‪ ،‬وھﻲ ﺗﺄﺧذ إﺣدى اﻟﻘﯾم اﻟﺗﺎﻟﯾﺔ ‪:‬‬

‫‪ : Static ‬ﺣﯾث ﯾﺗم ﺣﺟز ﻣﺳﺎﺣﺔ رﺳﺎﻟﺔ اﻟﺧطﺄ ﻋﻠﻰ اﻟﺻﻔﺣﺔ ﺣﺗﻰ إن ﻟم ﯾﻛن ھﻧﺎك ﺧطﺄ ﻓﻲ‬
‫دﺧل اﻟﻣﺳﺗﺧدم وﻟم ﺗﻛن ھﻧﺎك ﺿرورة ﻟﻌرض ھذه اﻟرﺳﺎﻟﺔ ‪ ،‬وﯾﻛون ﻛود ‪ HTML‬اﻟﻧﺎﺗﺞ‬
‫ﻋﻧﮭﺎ ‪:‬‬

‫ﻛود ‪HTML‬‬
‫>‪<span id="RequiredFieldValidator1" style="visibility:hidden;">*</span‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫‪ : Dynamic ‬ﻻ ﯾﺗم ﺣﺟز ﻣﺳﺎﺣﺔ رﺳﺎﻟﺔ اﻟﺧطﺄ ﻋﻠﻰ اﻟﺻﻔﺣﺔ ﺣﺗﻰ ظﮭورھﺎ ‪ ،‬وﯾﻛون ﻛود‬
‫‪ HTML‬اﻟﻧﺎﺗﺞ ﻋﻧﮭﺎ ‪:‬‬

‫ﻛود ‪HTML‬‬
‫>‪<span id="RequiredFieldValidator١" style="display:none;">*</span‬‬

‫‪ : None ‬إن ﺗﺣدﯾد ھذا اﻟﺧﯾﺎر ﯾؤدي ﻟﻌدم ظﮭور رﺳﺎﻟﺔ اﻟﺧطﺄ ﺿﻣن أداة اﻟﺗﺣﻘق ‪ ،‬واﻻﻛﺗﻔﺎء‬
‫ﺑﺈرﺳﺎﻟﮭﺎ ﻟﻸداة ‪ ValidationSummary‬ﺣﯾث ﺗﻘوم ﺑﻌرﺿﮭﺎ ‪.‬‬

‫اﺳﺗﺧدام ﻣﺟﻣوﻋﺎت اﻟﺗﺣﻘق‬

‫ﻓﻲ ﻛﺛﯾر ﻣن اﻟﺣﺎﻻت ﻧﺣﺗﺎج ﻟﺑﻧﺎء أﻛﺛر ﻣن ﻧﻣوذج ﺗﺻﻣﯾم ﺿﻣن ﻧﻔس اﻟﺻﻔﺣﺔ ‪ ،‬ﻣﺛﻼ ً ﻓﻲ اﻟﺻﻔﺣﺔ‬
‫اﻟرﺋﯾﺳﯾﺔ ﻟﻣوﻗﻊ ﻓﯾﺳﺑوك ‪ facebook.com‬ﯾوﺟد ﻧﻣوذﺟﯾن ‪ ،‬أﺣدھﻣﺎ ﻟﺗﺳﺟﯾل ﺣﺳﺎب ﺟدﯾد واﻵﺧر‬
‫ﻹﺟراء ﻋﻣﻠﯾﺔ ﺗﺳﺟﯾل اﻟدﺧول ‪ ،‬وﻟﻛل ﻧﻣوذج ﺷروط اﻟﺗﺣﻘق اﻟﺧﺎﺻﺔ ﺑﮫ ‪ ،‬ﺣﯾث إن اﻟﺿﻐط ﻋﻠﻰ زر‬
‫"ﺗﺳﺟﯾل اﻟدﺧول" ﯾؤدي إﻟﻰ ﻋﻣل أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﺿﻣن ﻧﻣوذج ﺗﺳﺟﯾل اﻟدﺧول ‪ ،‬وﺑﺎﻟﻣﻘﺎﺑل‬
‫ﻓﺈن اﻟﺿﻐط ﻋﻠﻰ زر "إﻧﺷﺎء ﺣﺳﺎب" ﯾؤدي إﻟﻰ ﻋﻣل أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ھذا اﻟﻧﻣوذج ﻓﻘط ‪،‬‬
‫ﻟﻧﻘم اﻵن ﺑﺗطﺑﯾق اﻟﺳﯾﻧﺎرﯾو اﻟﺳﺎﺑق ﻟﺗﺗوﺿﺢ اﻟﻣﺳﺄﻟﺔ ﺑﺷﻛل أﻛﺑر ‪.‬‬

‫ﻗم ﺑﺗﺻﻣﯾم ﺻﻔﺣﺔ ﻣﺷﺎﺑﮭﺔ ﻟﻠﺻﻔﺣﺔ اﻟﺗﺎﻟﯾﺔ ‪:‬‬

‫ﺣﯾث إن ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق اﻟﻣﺿﺎﻓﺔ ھﻲ ﻣن اﻟﻧوع ‪ ، RequiredFieldValidator١‬ﻛود‬


‫اﻟﺻﻔﺣﺔ اﻟﻧﺎﺗﺞ ‪:‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

ASP.net ‫ﻛود‬
<div>
<asp:Label ID="Label1" runat="server" Text="‫<>"ﺟﺪﯾﺪ ﺣﺴﺎب ﺗﺴﺠﯿﻞ‬/asp:Label>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="(Required)"
ForeColor="Red"></asp:RequiredFieldValidator>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2" ErrorMessage="(Required)"
ForeColor="Red"></asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="‫ "ﺣﺴﺎب إﻧﺸﺎء‬/>
<br />
<hr />
<asp:Label ID="Label2" runat="server" Text="‫<>"دﺧﻮل ﺗﺴﺠﯿﻞ‬/asp:Label>

<br />
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="TextBox3" ErrorMessage="(Required)"
ForeColor="Red"></asp:RequiredFieldValidator>
<br />
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="TextBox4" ErrorMessage="(Required)"
ForeColor="Red"></asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button2" runat="server" Text="‫ "دﺧﻮل ﺗﺴﺠﯿﻞ‬/>

<br />

</div>

‫ ﺳﺗﺟد‬، "‫ اﻣﻸ ﺑﯾﺎﻧﺎت اﻟﻧﻣوذج اﻷول واﺿﻐط ﻋﻠﻰ اﻟزر "إﻧﺷﺎء ﺣﺳﺎب‬، ‫ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ‬
‫أﻧﮫ ﻟم ﯾﺗم إرﺳﺎل اﻟﺻﻔﺣﺔ إﻟﻰ اﻟﺳﯾرﻓر إﻧﻣﺎ ظﮭرت رﺳﺎﺋل ﺗطﺎﻟﺑك ﺑﺈدﺧﺎل ﺑﯾﺎﻧﺎت ﻓﻲ ﺣﻘول ﻧﻣوذج‬
‫ اﻟﺳﺑب وراء ذﻟك ھو أن اﻟﺿﻐط ﻋﻠﻰ أي زر ﺳؤدي إﻟﻰ ﻋﻣل ﺟﻣﯾﻊ أدوات‬، ! ‫ﺗﺳﺟﯾل اﻟدﺧول‬
‫ ﺗم اﻟﺗﻐﻠب ﻋﻠﻰ ھذه‬ASP.net 2.0 ‫ ﻓﻲ اﻹﺻدارات اﻟﺗﺎﻟﯾﺔ ﻟـ‬، ‫اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ﺗﻠك اﻟﺻﻔﺣﺔ‬
‫اﻟﻣﺷﻛﻠﺔ ﻋﺑر إﻣﻛﺎﻧﯾﺔ ﺿم اﻟﻌدﯾد ﻣن أدوات اﻟﺗﺣﻘق ﻓﻲ ﻣﺟﻣوﻋﺔ ﺗﺣﻘق واﺣد ورﺑط زر ﻣﺎ ﺑﻣﺟوﻋﺔ‬
‫اﻟﺗﺣﻘق ھذه وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈن اﻟﺿﻐط ﻋﻠﻰ ھذا اﻟزر ﺳؤدي إﻟﻰ ﻋﻣل أدوات اﻟﺗﺣﻘق اﻟﻣﻧﺗﻣﯾﺔ إﻟﻰ‬
‫ وﻟن ﺗﻌﻣل أي أداة ﺗﺣﻘق ﻣﻧﺗﻣﯾﺔ إﻟﻰ ﻣﺟﻣوﻋﺔ أﺧرى ﺣﺗﻰ ﯾﺗم اﻟﺿﻐط ﻋﻠﻰ ﻋﻠﻰ زر‬، ‫ﻣﺟﻣوﻋﺗﮫ ﻓﻘط‬
. ‫ﯾﻧﺗﻣﻲ إﻟﻰ ﻧﻔس ﺗﻠك اﻟﻣﺟﻣوﻋﺔ‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫ ﺣﯾث ﯾﺗم‬، ValidationGroup ‫ﯾﺗم ﺗﺣدﯾد اﻟﻣﺟﻣوﻋﺔ اﻟﺗﻲ ﺗﻧﺗﻣﻲ ﻟﮭﺎ أداة اﻟﺗﺣﻘق ﻣن ﺧﻼل اﻟﺧﺎﺻﯾﺔ‬
‫ إن‬، ( ‫إﺳﻧﺎد ﻧﻔس اﻟﻘﯾﻣﺔ إﻟﻰ ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق اﻟﺗﻲ ﺗﻘﻊ ﺿﻣن ﻧﻔس اﻟﻧﻣوذج ) ﻧﻔس اﻟﻣﺟﻣوﻋﺔ‬
‫ ﺣﯾث‬Button, ImageButton, LinkButton ‫ھذه اﻟﺧﺎﺻﯾﺔ ﻣوﺟودة أﯾﺿﺎ ً ﻓﻲ أدوات اﻟﺗﺣﻛم‬
‫ﯾﻧﻐﻲ إﻋطﺎؤھﺎ ﻧﻔس اﻟﻘﯾﻣﺔ ﺑﺣﺳب اﻟﻧﻣوذج اﻟﺗﻲ ﺗﻘﻊ ﻓﯾﮫ واﻟﻣﺳؤوﻟﺔ ﻋن ﺗﺷﻐﯾل أدوات اﻟﺗﺣﻘق‬
. ‫اﻟﺧﺎﺻﺔ ﺑﮫ‬

‫ ﻷدوات‬ValidationGroup ‫“ إﻟﻰ اﻟﺧﺎﺻﯾﺔ‬signup” ‫ أﺳﻧد اﻟﻘﯾﻣﺔ‬، ‫ﻟﻧﻌد إﻟﻰ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ‬


. "‫اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ﻧﻣوذج "ﺗﺳﺟﯾل ﺣﺳﺎب ﺟدﯾد" وﻛذﻟك أﯾﺿﺎ ً ﻟﻠزر "إﻧﺷﺎء ﺣﺳﺎب‬

‫ ﻷدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ﻧﻣوذج‬ValidationGroup ‫“ إﻟﻰ اﻟﺧﺎﺻﯾﺔ‬login” ‫ﺛم أﺳﻧد اﻟﻘﯾﻣﺔ‬


. "‫"ﺗﺳﺟﯾل دﺧول" وﻛذﻟك أﯾﺿﺎ ً ﻟﻠزر "ﺗﺳﺟﯾل دﺧول‬

: ‫ﺣﯾث ﺳﯾﺻﺑﺢ ﻛود اﻟﺻﻔﺣﺔ ﺑﺎﻟﺷﻛل اﻟﺗﺎﻟﻲ‬

ASP.net ‫ﻛود‬
<div>
<asp:Label ID="Label1" runat="server" Text="‫<>"ﺟﺪﯾﺪ ﺣﺴﺎب ﺗﺴﺠﯿﻞ‬/asp:Label>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="(Required)"
ForeColor="Red"
ValidationGroup="signup">
</asp:RequiredFieldValidator>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="(Required)"
ForeColor="Red"
ValidationGroup="signup">
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="‫"ﺣﺴﺎب إﻧﺸﺎء‬
ValidationGroup="signup" />
<br />
<hr />
<asp:Label ID="Label2" runat="server" Text="‫<>"دﺧﻮل ﺗﺴﺠﯿﻞ‬/asp:Label>
<br />
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="TextBox3"
ErrorMessage="(Required)"
ForeColor="Red"
ValidationGroup="login">
</asp:RequiredFieldValidator>
<br />
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫>‪<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox‬‬


‫"‪<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server‬‬
‫"‪ControlToValidate="TextBox4‬‬
‫")‪ErrorMessage="(Required‬‬
‫"‪ForeColor="Red‬‬
‫>"‪ValidationGroup="login‬‬
‫>‪</asp:RequiredFieldValidator‬‬
‫>‪<br /‬‬
‫"دﺧﻮل ﺗﺴﺠﯿﻞ"=‪<asp:Button ID="Button2" runat="server" Text‬‬
‫>‪ValidationGroup="login" /‬‬

‫>‪<br /‬‬

‫>‪</div‬‬

‫ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ ‪ ،‬ﻻﺗﻘم ﺑﻣلء أي ﺑﯾﺎﻧﺎت ‪ ،‬ﻋﻧد اﻟﺿﻐط ﻋﻠﻰ زر "إﻧﺷﺎء ﺣﺳﺎب" ﺳﺗﺟد أن‬
‫أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ﻧﻣوذج "ﺗﺳﺟﯾل ﺣﺳﺎب ﺟدﯾد" ھﻲ وﺣدھﺎ اﻟﺗﻲ أظﮭرت رﺳﺎﺋل ﺗطﺎﻟﺑك‬
‫ﺑﺈدﺧﺎل ﺑﯾﺎﻧﺎت ‪ ،‬ﻗم ﺑﻌدھﺎ ﺑﺎﻟﺿﻐط ﻋﻠﻰ اﻟزر ﻓﻲ ﻧﻣوذج "ﺗﺳﺟﯾل دﺧول" ﺳﺗﺟد أن أدوات اﻟﺗﺣﻘق‬
‫اﻟﻣوﺟودة ﻓﻲ ھذا اﻟﻧﻣوذج ھﻲ وﺣدھﺎ اﻟﺗﻲ ﺳﺗﻌﻣل ‪.‬‬

‫وﺑﮭذه اﻟطرﯾﻘﺔ ﺑﺈﻣﻛﺎﻧك ﺗﺧﺻﯾص أدوات اﻟﺗﺣﻘق واﻷزرار اﻟﻣرﺗﺑطﺔ ﺑﮭﺎ ﻓﻲ ﻣﺟﻣوﻋﺎت ‪ ،‬وﺑﺎﻟﺗﺎﻟﻲ‬
‫ﻓﺈن ﻋﻣﻠﮭﺎ ﻟن ﯾﺗداﺧل أو ﯾﺗﺿﺎرب ﻣﻊ ﺑﻌﺿﮭﺎ اﻟﺑﻌض ‪.‬‬

‫إﻟﻐﺎء ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق‬

‫وﺟدﻧﺎ ﻣن ﺧﻼل اﻟﻔﻘرات اﻟﺳﺎﺑﻘﺔ أن أدوات اﻟﺗﺣﻛم ‪ Button, ImageButton, LinkButton‬ھﻲ‬


‫اﻟﺗﻲ ﺗﻘوم ﺑﺗﺷﻐﯾل أدوات اﻟﺗﺣﻘق ‪،‬وﻟﻛن ﻣن اﻟﻣﻣﻛن ﺟﻌل اﻷدوات اﻟﺳﺎﺑﻘﺔ ﻻﺗﺳﺑب ﺗﺷﻐﯾل أدوات‬
‫اﻟﺗﺣﻘق وذﻟك ﺑﺈﺳﻧﺎد اﻟﻘﯾﻣﺔ ‪ False‬ﻟﻠﺧﺎﺻﯾﺔ ‪ ، CausesValidation‬ﻣن اﻟﺣﺎﻻت اﻟﺷﺎﺋﻌﺔ ﻻﺳﺗﺧدام‬
‫ھذه اﻟﺧﺎﺻﯾﺔ ﻋﻧد ﺗﺻﻣﯾم ﻧﻣوذج ﺗﺳﺟﯾل وإﺿﺎﻓﺔ زر "إﻟﻐﺎء اﻷﻣر" ﺣﯾث ﯾﺟب أﻻ ﯾﺳﺑب اﻟﺿﻐط‬
‫ﻋﻠﻰ ھذا اﻟزر ﻋﻣل أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﻓﻲ ذﻟك اﻟﻧﻣوذج ‪ ،‬وﺑﺎﻟﺗﺎﻟﻲ ﻧﻘوم ﺑﺈﻋطﺎء اﻟﺧﺎﺻﯾﺔ‬
‫‪ CausesValidation‬ﻟذﻟك اﻟزر اﻟﻘﯾﻣﺔ ‪. False‬‬

‫ﺗﻣرﯾن ﻏﯾر ﻣﺣﻠول ‪:‬‬

‫ﻗم ﺑﺈﻧﺷﺎء ﻧﻣوذج ﺑﺳﯾط ﻹﺟراء ﻋﻣﻠﯾﺔ ﺗﺳﺟﯾل اﻟدﺧول ‪ ،‬ﻗم ﺑﺈﺿﺎﻓﺔ أدوات اﻟﺗﺣﻘق اﻟﻣﻧﺎﺳﺑﺔ ‪ ،‬أﺿف‬
‫أﺳﻔل اﻟﻧﻣوذج زري أﻣر أﺣدھﻣﺎ " ﺗﺳﺟﯾل اﻟدﺧول" واﻵﺧر "إﻟﻐﺎء اﻷﻣر" ‪ ،‬ﯾؤدي اﻟﺿﻐط ﻋﻠﻰ اﻟزر‬
‫"ﺗﺳﺟﯾل اﻟدﺧول" إﻟﻰ ﻋﻣل أدوات اﻟﺗﺣﻘق ‪ ،‬أﻣﺎ اﻟﺿﻐط ﻋﻠﻰ اﻟزر "إﻟﻐﺎء اﻷﻣر" ﯾؤدي إﻟﻰ ﻧﻘل‬
‫اﻟﻣﺳﺗﺧدم إﻟﻰ ﺻﻔﺣﺔ أﺧرى ‪.‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫ﺗﻣﯾﯾز اﻟﺣﻘول اﻟﻣﺧﺎﻟﻔﺔ ﺑﺎﺳﺗﺧدام اﻷﻟوان‬

‫ﺳﻧﻘوم ﻓﻲ اﻟﻔﻘرة ﺑﺟﻌل اﻟﺣﻘول اﻟﻣﺧﺎﻟﻔﺔ ﻟﺷرط اﻟﺗﺣﻘق ﺗظﮭر ﺑﻠون أﺻﻔر) أو أي ﻟون ﺗرﻏب ﺑﮫ( ‪،‬‬
‫وذﻟك ﺣﺗﻰ ﺗظﮭر ﺑوﺿوح ﻟﻠﻣﺳﺗﺧدم ﺧﺎﺻﺔ ﻋﻧد ﺑﻧﺎء ﻧﻣﺎذج ﻛﺑﯾرة اﻟﺣﺟم ‪ ،‬ﻛﻧﻣﺎذج اﻟﺳﯾرة اﻟذاﺗﯾﺔ‬
‫وﻏﯾره ‪.‬‬

‫ﻗم ﺑﺈﻧﺷﺎء ﺻﻔﺣﺔ ﺟدﯾدة ‪ ،‬ﺻﻣم ﻧﻣوذج ﺑﺳﯾط ﻹدﺧﺎل اﺳم اﻟﻣﺳﺗﺧدم وﻛﻠﻣﺔ اﻟﻣرور) ﻛﻣﺎ ﯾظﮭر ﻓﻲ‬
‫اﻟﺻورة ﺑﺎﻷﻋﻠﻰ ( ‪ ،‬وارﺑط ﻛل ﺣﻘل ﻣﻧﮭﻣﺎ ﺑﺄداة ﺗﺣﻘق ﻣن اﻟﻧوع ‪RequiredFieldValidator‬‬
‫واﺟﻌل اﻟﺧﺎﺻﯾﺔ ‪ EnableClientScript‬ﺗﺄﺧذ اﻟﻘﯾﻣﺔ ‪ False‬ﻟﻛﻼ ً ﻣن أداﺗﻲ اﻟﺗﺣﻘق اﻟﺳﺎﺑﻘﺗﯾن ‪،‬‬
‫وذﻟك ﺣﺗﻰ ﻧﻠﻐﻲ ﻋﻣﻠﯾﺔ اﻟﺗﺣﻘق ﻋﻠﻰ ﺟﺎﻧب اﻟﻌﻣﯾل وﻧﺑﻘﯾﮭﺎ ﻓﻘط ﻋﻠﻰ ﺟﺎﻧب اﻟﺳﯾرﻓر ﻷن اﻟﺳﯾرﻓر ھو‬
‫اﻟذي ﺳﯾﻘوم ﺑﺗﻠوﯾن اﻟﺣﻘول اﻟﻣﺧﺎﻟﻔﺔ ﺑﻠون ﻣﺧﺗﻠف ‪.‬‬

‫أﺿف اﻟداﻟﺔ اﻟﺗﺎﻟﯾﺔ ﻟﺻﻔﺣﺔ اﻟﻛود اﻟﺧﻠﻔﻲ )‪ C#‬أو ‪ (VB‬ﻟﻠﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ ‪:‬‬

‫ﻛود ‪C#‬‬
‫)(‪void Page_PreRender‬‬
‫{‬
‫)‪foreach (BaseValidator valControl in Page.Validators‬‬
‫{‬
‫= ‪WebControl assControl‬‬
‫;)‪(WebControl)Page.FindControl(valControl.ControlToValidate‬‬
‫)‪if (!valControl.IsValid‬‬
‫;‪assControl.BackColor = System.Drawing.Color.Yellow‬‬
‫‪else‬‬
‫;‪assControl.BackColor = System.Drawing.Color.White‬‬
‫}‬
‫}‬

‫ﻛود ‪VB‬‬
‫)(‪Sub Page_PreRender‬‬

‫‪For Each valControl As BaseValidator In Page.Validators‬‬


‫= ‪Dim assControl As WebControl‬‬
‫)‪Page.FindControl(valControl.ControlToValidate‬‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

If Not valControl.IsValid Then


assControl.BackColor = Drawing.Color.Yellow
Else
assControl.BackColor = Drawing.Color.White
End If
Next

End Sub

‫ وﻓﺣﺻﮭﺎ ﻓﺈن‬، ‫ﺣﯾث ﯾﻘوم اﻟﻛود اﻟﺳﺎﺑق ﺑﺎﻟﻣرور ﻋﻠﻰ ﺟﻣﯾﻊ أدوات اﻟﺗﺣﻘق اﻟﻣوﺟودة ﺿﻣن اﻟﺻﻔﺣﺔ‬
‫ وإﻻ ﯾﺗم إﺑﻘﺎؤه ﺑﺎﻟﻠون اﻷﺑﯾض‬، ‫ﻛﺎن اﻟﺣﻘل اﻟﻣرﺗﺑط ﺑﮭﺎ ﻏﯾر ﻣواﻓق ﻟﻠﺷرط ﯾﺗم ﺗﻠوﯾﻧﮫ ﺑﺎﻟﻠون اﻷﺻﻔر‬

: ‫ﻛود اﻟﺻﻔﺣﺔ‬

ASP.net ‫ﻛود‬
<div>

<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>


<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="*"
ForeColor="Red"
EnableClientScript="False">
</asp:RequiredFieldValidator>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2"
ErrorMessage="*"
ForeColor="Red"
EnableClientScript="False">
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="‫ "اﻟﺒﯿﺎﻧﺎت إرﺳﺎل‬/>
<br />

</div>

‫ ﻗم‬، ‫ اﺿﻐط ﻋﻠﻰ اﻟزر دون ﻣﻠﺊ ﺑﯾﺎﻧﺎت وﻻﺣظ ﺗﻐﯾﯾر ﻟوﻧﮭﺎ إﻟﻰ اﻷﺻﻔر‬، ‫ﻗم ﺑﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ‬
‫ ﺗﻔﯾد ھذه اﻟطرﯾﻘﺔ‬. ‫ﺑﻣﻸ أﺣد اﻟﺣﻘول ﺛم أﻋد اﻟﺿﻐط ﻋﻠﻰ اﻟزر ﻟﺗﺟد أﻧﮫ ﺳﯾﺗم إﻋﺎدة ﻟوﻧﮫ إﻟﻰ اﻷﺑﯾض‬
‫ﻛﻣﺎ ذﻛرت ﺳﺎﺑﻘﺎ ً ﻋﻧد اﻟﻌﻣل ﻣﻊ ﻧﻣﺎذج ﻛﺑﯾرة اﻟﺣﺟم وذﻟك ﻟﯾﺳﮭل ﻋﻠﻰ اﻟﻣﺳﺗﺧدم ﺗﻣﯾﯾز اﻟﺣﻘول‬
. ‫اﻟﻣﺧﺎﻟﻔﺔ ﻟﺷرط اﻟﺗﺣﻘق‬
‫اﺳﺗﺧدام أدوات اﻟﺗﺣﻘق‬ ‫اﻟﻔﺻل اﻟﺛﺎﻟث‬

‫اﻟﺧﺎﺗﻣﺔ‬

‫إﻟﻰ ھﻧﺎ ﻧﺄﺗﻲ ﻟﻧﮭﺎﯾﺔ ھذا اﻟﻔﺻل ‪ ،‬واﻟذي ﺗﻧﺎوﻟﻧﺎ ﻓﯾﮫ ﻛﯾﻔﯾﺔ اﻟﺗﻌﺎﻣل ﻣﻊ أدوات اﻟﺗﺣﻘق ﻋﻠﻰ اﺧﺗﻼف‬
‫أﻧواﻋﮭﺎ واﺳﺗﺧداﻣﺎﺗﮭﺎ ‪ ،‬ﻛﺎﻟﺗﺣﻘق ﻣن أن اﻟﻣﺳﺗﺧدم ﻗد ﻣﻸ اﻟﺣﻘول اﻟﻣطﻠوﺑﺔ ‪ ،‬وﺑﻧﻣط ﺑﯾﺎﻧﺎت ﺻﺣﯾﺢ‬
‫وﻣواﻓق ﻟﻠﺻﯾﻐﺔ اﻟﻣطﻠوﺑﺔ وﻟﻣﺟﺎل اﻟﻘﯾم اﻟﻣﺣدد ‪ ،‬ﺛم ﺗﻌﻠﻣﻧﺎ ﻛﯾﻔﯾﺔ إظﮭﺎر ﺟﻣﯾﻊ رﺳﺎﺋل اﻷﺧطﺎء‬
‫اﻟﺣﺎﺻﻠﺔ ﻓﻲ اﻟﺻﻔﺣﺔ ﺿﻣن أداة وﺣﯾدة وﻣﻛﺎن واﺣد ‪ ،‬ﺛم ﻧﺎﻗﺷﻧﺎ اﻟﻌدﯾد ﻣن اﻷﻣور واﻟﺧﺻﺎﺋص‬
‫واﻟﺗﻲ ﺗﺳﺗﺧدم ﺑﻛﺛرة ﻓﻲ اﻟﻣواﻗﻊ ‪ ،‬ﻛﺑﻧﺎء أﻛﺛر ﻣن ﻧﻣوذج ﺿﻣن ﻧﻔس اﻟﺻﻔﺣﺔ واﺳﺗﺧدام ﻣﺟﻣوﻋﺎت‬
‫اﻟﺗﺣﻘق ‪ .‬ﻣن اﻟﺿروري ﺟدا ً أن ﺗﻘوم ﺑﺗطﺑﯾق ﺟﻣﯾﻊ اﻷﻣﺛﻠﺔ اﻟواردة ﺿﻣن ھذا اﻟﻔﺻل وﺟﻣﯾﻊ‬
‫اﻟﻔﺻول وﻻﺗﻛﺗﻔﻲ ﺑﻣﺟرد اﻟﻘراءة وذﻟك ﻟﺗﺛﺑﯾت اﻟﻣﻌوﻣﺔ ﻟدﯾك واﻻﻋﺗﯾﺎد ﻋﻠﻰ اﻟﻣﻣﺎرﺳﺔ ﻓﻲ ﺑﻧﺎء ﻣواﻗﻊ‬
‫اﻻﻧﺗرﻧت ‪.‬‬

‫ﻧﻠﺗﻘﻲ ﻓﻲ ﻓﺻل ﻗﺎدم وﻣواﺿﯾﻊ ﺟدﯾدة إن ﺷﺎء ﷲ ‪ ،‬ﻷي اﻗﺗراح أو ﻧﻘد أرﺟو اﻟﺗواﺻل ﻋﻠﻰ اﻟﺑرﯾد‬
‫اﻻﻛﺗروﻧﻲ ‪ ،‬وﷲ وﻟﻲ اﻟﺗوﻓﯾق ‪.‬‬

‫ﻟﻠﺗواﺻل ‪:‬‬

‫‪m-hajjkhalaf@hotmail.com‬‬

‫‪http://www.facebook.com/mohammed.hajkhalaf‬‬

‫ﻣﺣﻣد ﻋﻣر اﻟﺣﺎج ﺧﻠف – ﺳورﯾﺎ‬

You might also like