واجهة برمجة تطبيقات العميل
هناك واجهة برمجة تطبيقات صغيرة يمكن استخدامها على العميل لتحقيق تأثيرات مختلفة في رمز العميل الخاص بك. نظرًا لأنه لا يمكن إخفاء بعض الروتين ، من الناحية النظرية ، يمكنك استخدام العميل للتحقق من جميع المتغيرات والخصائص والوظائف المحددة من قبل العميل. ومع ذلك ، يمكن تغيير الكثير منهم. ما يلي يلخص كائن العميل الذي نشجعك على استخدامه.
الجدول 3. كائن العميل
وصف نوع الاسم
أشار Page_isvalid Boolean إلى ما إذا كانت الصفحة صالحة حاليًا. التحقق من البرامج النصية دائما الحفاظ على المتغير الأحدث.
Page_Validator Element Array هذه صفيف يحتوي على جميع التحقيقات في الصفحة.
تشير Page_ValidationActive Boolean إلى ما إذا كان ينبغي التحقق منها. يمكنك إثبات هذا المتغير على FALSE من خلال البرمجة.
يعزى ISValid Boolen كل جهاز التحقق من العميل لديه الخاصية ، مشيرًا إلى ما إذا كان جهاز التحقق صالحًا حاليًا. يرجى ملاحظة أنه في إصدار PDC ، يتم خلط هذه السمة مع isValid.
تجاوز التحقق من العميل
تتمثل إحدى المهام التي تحتاجها في كثير من الأحيان في إضافة زر "إلغاء" أو زر التنقل في الصفحة. في هذه الحالة ، حتى لو كانت هناك أخطاء في الصفحة ، فقد ترغب أيضًا في استخدام الزر لإرسال الصفحة. نظرًا لأن حدث زر العميل يحدث قبل حدث OnSubmit للنموذج ، فقد يتجنب تقديم الفحص وتجاوز التحقق. يوضح ما يلي كيفية استخدام التحكم في صورة HTML كزر "إلغاء" لإكمال المهمة:
<نوع الإدخال = صورة الصورة = الخادم
القيمة = إلغاء
onClick = page_validationActive = false ؛
onServerClight = cmdcancel_click>
استخدم عنصر تحكم ImageButton لتنفيذ بعض الالتباس ، لأن حدث OnClick يفترض أنه حدث بجانب الخادم مع نفس الاسم. يجب عليك تعيين هذا الحدث في البرنامج النصي العميل:
<ASP: ImageButton Runat = Server ID = CMDimgCancel
AlternateText = إلغاء
onClick = cmdcancel_click/>
<لغة البرنامج النصي = javaScript>
document.all [cmdimgcancel] .onclick =
وظيفة جديدة (page_validationActive = false ؛) ؛
</script>
هناك طريقة أخرى لحل هذه المشكلة وهي تعيين إعدادات معينة من زر "إلغاء" حتى لا يؤدي إلى تشغيل حدث التقديم في البرنامج النصي للعميل عند العودة. HtmlinputButton و Linkbutton عناصر التحكم هي الأمثلة.
تأثير خاص
متطلبات شائعة أخرى هو أنه بالإضافة إلى معلومات الخطأ التي يعرضها جهاز التحقق نفسه ، هناك حاجة إلى بعض التأثيرات الأخرى. في هذه الحالة ، يجب تنفيذ أي تعديل تقوم بإجراءه في نفس الوقت على الخادم أو العميل. لنفترض أنك بحاجة إلى إضافة ملصق لتغيير اللون وفقًا لما إذا كان الإدخال صالحًا. فيما يلي كيفية تنفيذ هذه المهمة على الخادم:
الطبقة العامة changeColorpage: صفحة {
العلامة العامة lblzip ؛
قيمة RegulaxPressionvalidator العامة ؛
تجاوز الفراغ المحمي (eventArgs e) {{
lblzip.forecolor = valzip.isvalid؟
}
}
جميع الطرق المذكورة أعلاه مثالية ، ولكن طالما قمت بتعديل التحقق أعلاه ، ستجد أنه ما لم تنفذ نفس العملية على العميل ، فستبدو غير متسقة للغاية. سيسمح لك إطار التحقق من تجنب العديد من هذه التأثيرات المزدوجة ، ولكن لا يمكنه تجنب التأثيرات الأخرى التي يجب تحقيقها في نفس الوقت على العميل والخادم. ما يلي عبارة عن جزء يؤدي نفس المهمة على العميل:
<ASP: Label ID = LBLZIP Runat = Server
النص = الرمز البريدي:/>
<ASP: TextBox ID = Txtzip Runat = Server
onChange = txtziponchange () ؛
<asp: undaterxpressionvalididator id = valzip runat = server
ControlTovalidate = txtzip
errormessage = رمز بريدي غير صالح
التحقق من الصحة = [0-9] {5} /> <br>
<لغة البرنامج النصي = javaScript>
دالة txtziponchange () {{) {
// إذا لم يكن التحقق من العميل في النشاط ، فلن يؤدي أي عملية
IFOF (page_validators) == غير محددة) العودة ؛
// تغيير لون الملصق
lblzip.style.color = valzip.isvalid؟
}
</script>
BETA 1 API Client API
بالنسبة إلى الإصدار التجريبي 1 ، فإن بعض الوظائف التي يمكن استدعاؤها من نص العميل ستتسبب في مواقف أخرى.
الجدول 4. وظيفة من مكالمة نص العميل
وصف الاسم
يستخدم ValitatorValidate (VAL) جهاز التحقق من العميل كمدخل. اجعل جهاز التحقق تحقق من الإدخال الخاص به وتحديث شاشة العرض الخاصة به.
Edativeatorenable (VAL ، Enable) الحصول على جهاز التحقق من العميل وقيمة منطقية. تمكين أو تعطيل جهاز التحقق من العميل. إذا تم تعطيله ، فلن يتم تقييم جهاز التحقق من العميل ، وسيكون مدقق العميل دائمًا صالحًا.
حصل ValitatorHookupControl (التحكم ، VAL) على عنصر HTML إدخال وجهاز التحقق من العميل. تعديل أو إنشاء حدث تغيير العنصر بحيث يمكن تحديث جهاز التحقق أثناء التغيير. هذه الوظيفة مناسبة للتحققات المخصصة بناءً على قيم إدخال متعددة.
غرضه الخاص هو تمكين أو تعطيل جهاز التحقق. إذا كنت ترغب في التحقق من أنك تدخل في ظروف محددة فقط ، فقد تحتاج إلى تغيير حالة التنشيط في نفس الوقت على الخادم والعملاء ، وإلا ستجد أنه لا يمكن للمستخدم إرسال الصفحة.
فيما يلي المثال أعلاه بالإضافة إلى الحقل.
الطبقة العامة الشرطية: صفحة {
HtmlinputCheckbox العام ؛
ResearchFieldValidator Rfvalshipaddress ؛
Void Void محمي Void Void () {) {)
BOOL ENABLESHIP =!
rfvalshipaddress.endabled = enableShip ؛
base.validate () ؛
}
}
فيما يلي رمز العميل المكافئ:
<نوع الإدخال = مربع الاختيار runat = معرف الخادم = chksameas
onclick = onchangesameas () ؛> نفس عنوان الدفع <br>
<لغة البرنامج النصي = javaScript>
وظيفة onchangesameas () {
var entleship =!
Valitatorenable (rfvalshipaddress ، enableship) ؛
}
</script>
قواعد فعالة ومعلومات خطأ مفيدة
يعرض كل جهاز التحقق معلومات خطأ محددة حول شروط محددة في عناصر تحكم محددة. هناك بعض القواعد التي تؤكد ما إذا كانت صالحة في البداية.
تعتبر جميع التحقيقات الفارغة (باستثناء مطلوب FieldValidator) صالحة. إذا كانت القيمة الفارغة غير صالحة ، فعادة ما تحتاج إلى مطلوب FieldValidator ومرحى آخر. تحتاج إلى القيام بذلك ، لأنه بشكل عام ، تريد دائمًا إظهار معلومات خطأ مختلفة على جهاز التحقق الفارغ والفعالية. يمكنك أيضًا استخدام معلومات غير واضحة ، مثل "يجب إدخال قيمة ، ويجب أن تتراوح هذه القيمة بين 1 و 10".
ترتبط قواعد خاصة أخرى تستخدم عندما لا يمكن تحويل حقل الإدخال إلى نوع بيانات محدد بـ CompareValidator و RangeValidator. تحدد عملية تقييم الصلاحية لـ comparevalidator of ControlTocompare أن عملية تقييم الصلاحية كما هو موضح أدناه:
إذا كان حقل الإدخال المشار إليه بواسطة ControlTovalidate فارغًا ، فهو فعال.
إذا كان لا يمكن تحويل حقل الإدخال المشار إليه بواسطة ControlTovalidate إلى نوع البيانات المطلوب ، فهو غير صالح.
إذا كان لا يمكن تحويل حقل الإدخال المشار إليه بواسطة ControlTocompare إلى نوع البيانات المطلوب ، فسيكون صحيحًا.
يتم تحويل حقل الإدخال إلى نوع البيانات المطلوب والمقارنة.
الخطوة الثالثة تبدو غير متسقة بعض الشيء. والسبب في ذلك هو أنه إذا فحص جهاز التحقق من فعالية الحقول المتعددة في نفس الوقت ، فمن الصعب كتابة معلومات خطأ ذات معنى لجهاز التحقق. يجب استخدام جهاز التحقق المستقل للإبلاغ عن حالة الخطأ في حقل إدخال ControlTocompare. يحتوي RangeValidator على طرق عمل مماثلة ، مع الحد الأقصى والحد الأدنى من الخصائص.
وظائف تمكين ومرئية وعرض الخصائص
قد لا يكون الفرق بين خصائص التمكين والمرئية والعرض لجهاز التحقق واضحًا للغاية.
Display = لا يمكن استخدام أي شيء لتحديد أن جهاز التحقق لا يعرض أي محتوى مباشرة ، ولكن لا يزال يقييم ، لا يزال يؤثر على الفعالية الكلية ، ولا يزال بإمكانه وضع الأخطاء في ملخص العميل والخادم. للتحقق من العميل ، يتم تحديد هذه القيم لاستخدام خصائص النمط المرئي أو استخدام خصائص نمط العرض لفتح أو إغلاق جهاز التحقق. بالنسبة للتحقق من جانب الخادم ، تعني العرض = الديناميكي أن الإدخال لا يعرض أي محتوى عندما يكون الإدخال صالحًا ، ويمثل العرض = ثابت مساحة لا تتغير (). سيتم طي الإعداد الأخير في عدم وجود محتوى عندما تكون الخلية التي تحتوي على جهاز التحقق فقط في الجدول صالحة.
لماذا لا تستخدم فقط مرئيًا = خطأ لجعل جهاز التحقق مرئيًا؟ في ASP+، فإن السمة المرئية لعنصر التحكم لها العديد من المعاني: لن تتم معالجة أو عرض السيطرة على مرئي = false على الإطلاق. ويرجع ذلك بالتحديد إلى هذا المعنى بأن مرئيًا = خطأ لجهاز التحقق يعني أنه لا يعرض أي محتوى فحسب ، بل لا يمكن استخدامه أيضًا. لن يتم تقييم جهاز التحقق هذا ، ولن يؤثر على صحة الصفحة ، ولن يتم وضعه في الملخص.
التمكين محايد. في معظم الحالات ، يكون تأثير التمكين = false و disible = false هو نفسه بالضبط. في الإصدار التجريبي 1 أو الإصدار الأعلى ، هناك فرق مهم: في التحقق من العميل ، سيظل جهاز التحقق المعاق يرسل إلى المتصفح ، لكنه في حالة معطلة. يمكنك استخدام وظيفة Valitatorenable في البرنامج النصي العميل لتنشيط جهاز التحقق.
عند استخدام مرئي أو تمكين للتحكم في ما إذا كان يجب التحقق ، انتبه إلى ترتيب الطلب على الخادم أعلاه. أو التغيير قبل التحقق ، أو إعادة تحديد بعد التغيير. خلاف ذلك ، لن تعكس قيمها Isvalid التغييرات على السمات.
CustomValidator التحكم
أسهل طريقة لتوسيع إطار التحقق هي استخدام التحكم في CustomValidator. يمكن استخدام عنصر التحكم هذا لإجراء عمليات التحقق التي لا يمكن تنفيذ عناصر تحكم التحقق الأخرى ، ولكن يمكنها أيضًا تنفيذ عمليات التحقق التي تحتاج إلى الوصول إلى المعلومات على الخادم (مثل قواعد البيانات أو خدمات الويب).
إذا تمت إضافة CustomValidator مع وظيفة التحقق من خادم واحدة فقط ، فستلاحظ أن جهاز التحقق لا يشارك في التحقق من العميل. عندما يتم تبديل المستخدم بين كل حقل باستخدام مفتاح TAB ، فلن يتم تحديث CustomValidator ، ويحتاج خادم trip المستدير إلى إجراء التحقق منه في وقت واحد. إذا كنت ترغب في استخدام CustomValIdator لإجراء فحص لا يتطلب أي معلومات على الخادم ، فيمكنك أيضًا استخدام خاصية ClientValidationFunction لجعل جهاز التحقق يشارك تمامًا في التحقق من العميل. لنفترض أنك توفر ClientValidationFunction. ولكن في الواقع ، فهو مجرد جزء من التحقق. لا يتجاوز التحقق من وظيفة التحقق من العميل التحقق من التنفيذ على الخادم لأن المتسللين يمكنهم بسهولة تجاوز وظيفة التحقق.
فيما يلي مثال بسيط على استخدام CustomValidator على العميل والخادم ، فقط تحقق مما إذا كان الإدخال متساويًا. دعنا نقدم وظيفة الخادم (في C#):
{الخدمة الجزئية) {الموضع
يحاول {
int i = int.fromString (value) ؛
العودة ((i ٪ 2) == 0) ؛
} يمسك {
العودة كاذبة
}
}
فيما يلي طريقة إعلان الوظيفة على العميل ، ووظيفة التحقق من العميل التي تؤدي نفس الشيك. عادةً ما يكون هذا نموذج JScript ، ولكن إذا كان هدفك هو Microsoft® Internet Explorer ، فيمكنك أيضًا استخدام نموذج VBScript®.
<ASP: CustomValIdator ID = CustomVal2 Runat = Server
errormessage = لا يمكن إزالة الأرقام!
ControlTovalidate = txtCustomData
onServalidationFunction = serverValidation
ClientValidationFunction = checkeven /> <br>
حقل البيانات: <ASP: TextBox ID = TXTCUSTOSDATA Runat = Server />
<لغة البرنامج النصي = javaScript>
<!-
وظيفة checkeven (المصدر ، القيمة) {{
var value = parseint (value ، 10) ؛
إذا (Isnan (Val))
العودة كاذبة
العودة ((Val ٪ 2) == 0) ؛
}
//->
</script>
فيما يلي بعض الاحتياطات باستخدام CustomValidator:
على غرار جميع عناصر التحكم في التحقق الأخرى (باستثناء مطلوب FieldValidator) ، إذا كان حقل الإدخال فارغًا ، يُعتبر أن CustomValidator فعال.
إذا تم استخدام المتصفح الأقدم أو تم إغلاق التحقق من العميل ، فلا يمكن استدعاء وظيفة التحقق من العميل. قبل تحديد الوظيفة ، لا يتعين عليك التحقق من وظيفة المتصفح المستخدم في المتصفح ، ولكن تحتاج إلى التأكد من أن المتصفح لا يسبب أخطاء نصية بسبب التعريف. تأكد من جعل رمز العميل الخاص بك بمثابة تعليق توضيحي لـ HTML ، كما هو موضح في المثال التالي.
يتم تمرير معلمتين إلى وظيفة العميل الخاصة بك وتتوافق مع المعلمات التي تم تمريرها إلى وظيفة الخادم. الأول هو عنصر جهاز التحقق من العميل ، والثاني هو قيمة التحكم المحددة بواسطة ControlTovalidate. ومع ذلك ، على العميل ، يمكنك اختيار عدم تحديد المعلمات للوظيفة ، والتي ستعمل بشكل طبيعي.
إذا كنت تستخدم إصدارات Beta1 أو أعلى ، فيمكنك الحفاظ على ControlTovalidate فارغًا. في هذا الوضع ، ستؤدي وظيفة الخادم دائمًا إلى تشغيل رحلة ذهابًا وإيابًا مستديرة ، وسيتم دائمًا تشغيل وظيفة العميل في كل مرة تحاول إرسالها. يمكنك استخدام هذه الميزة للتحقق من عناصر التحكم التي لا يمكن التحقق منها ، مثل قائمة CheckBoxList أو أزرار الراديو المنفصلة. إذا كانت الحالة تعتمد على عناصر تحكم متعددة ، ولا تريد أن يقوم المستخدم بتقييم الحالة عند التبديل بين كل حقل في الصفحة ، يمكنك استخدام هذه الطريقة.
خيار آخر في الإصدار التجريبي 1 أو أعلى هو حدث تغيير عناصر تحكم متعددة. تتمثل الطريقة في إضافة بعض البرامج النصية المدمجة التي تستدعي دالة العميل ValitatorHookupControl ، كما هو موضح أعلاه.
ما هي الضوابط التي يمكن التحقق منها؟
لتمكين التحكم في مرجع التحكم ، يجب أن يكون عنصر التحكم قد تم التحقق منه. تحتوي جميع عناصر التحكم التي تم التحقق منها على خصائص ValidentPropertyAttribute ، والتي تشير إلى السمة التي يجب قراءتها أثناء التحقق. إذا قمت بكتابة جهاز التحكم الخاص بك ، فيمكنك تحديد السمات المراد استخدامها من خلال توفير واحدة منها ، بحيث يكون التحكم في التحقق.
لتمكين التحقق من تنفيذ العميل بشكل طبيعي ، يجب أن تتوافق السمة مع خصائص القيمة لعنصر HTML الذي يعرضه العميل. لا تستحق العديد من عناصر التحكم المعقدة (مثل بيانات البيانات والتقويم) العميل ولا يمكن التحقق منها إلا على الخادم. لذلك ، فقط يتحكم الأقرب في عناصر HTML يمكن المشاركة في التحقق. بالإضافة إلى ذلك ، يجب أن يكون للتحكم قيمة منطقية واحدة على العميل. لذلك ، يمكن التحقق من RadiObuttonList ، ولكن لا يمكن لـ CheckBoxList.
نهاية
قد يكون التفسير المذكور أعلاه لـ ASP+ التحقق قد تجاوز المحتوى الذي تريد فهمه. استمتع بها!