سؤال

هذه مشكلة متعلقة بصيانة التعليمات البرمجية بقدر ما هي مشكلة تتعلق بالرمز، ولكن لدي WebForm لم يعد يتحقق من CustomValidator.لقد نجح الأمر عندما لمست الرمز آخر مرة منذ أكثر من عام، لكنه لم يعد يعمل الآن بعد أن طلب المستخدم بعض التغييرات...

يحتوي WebForm على قائمة منسدلة مرتبطة بالبيانات مع العنصر الافتراضي " - الكل -" مع String.Empty كقيمة له.عندما ينقر المستخدم على زر الإرسال، يجب على المدقق التحقق من أن قيمة القائمة المنسدلة ليست String.Empty.لقد قمت بتعيين نقاط توقف في رمز التحقق من صحة العميل ورمز التحقق من الخادم، ولكن لم يتم إطلاق أي منهما.

أين ستبدأ بالبحث؟ما هي المشتبه بهم المعتادين؟لقد قمت، بالطبع، بمقارنة نسخة العمل الخاصة بي بما هو موجود في التحكم بالمصادر، لكن لا شيء يبدو مريبًا.

فقط في حالة أهمية ذلك، إليك الكود الخاص بي:

<asp:DropDownList ID="_AssessmentDropDown" runat="server" DataSourceID="_AssessmentsData" CausesValidation="true" AutoPostBack="false"
    DataTextField="AssessmentName" DataValueField="AssessmentName" OnDataBound="_HandleAssessmentsBound">
</asp:DropDownList>
<asp:CustomValidator ID="_AssessmentValidator" runat="server" ClientValidationFunction="_HandleValidateAssessment_Client"
    ControlToValidate="_AssessmentDropDown" ErrorMessage="* You must select an Assessment."
    OnServerValidate="_HandleValidateAssessment" />
<asp:ObjectDataSource ID="_AssessmentsData" runat="server"
    OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
    TypeName="DataTableAdapters.GET_GRADE_ASSESSMENTSTableAdapter">
    <SelectParameters>
      <asp:ControlParameter Name="GRADECODE" ControlID="_GradeCodeDropDown" PropertyName="SelectedValue" />
    </SelectParameters>
</asp:ObjectDataSource>
هل كانت مفيدة؟

المحلول

لقد لاحظت بعض القضايا

  • لا أعتقد أنك بحاجة إلى CausesValidation=true إذا تم تعيين AutoPostBack على false
  • أنت لا تستخدم مجموعات التحقق من الصحة، لذا لا يمكن أن يكون هذا هو السبب
  • لماذا لا تستخدم RequiredFieldValidator؟
  • إذا كنت تريد تشغيل التحقق من الصحة في الحقول الفارغة، فقم بتعيين خاصية ValidateEmptyText إلى true

نصائح أخرى

وA CustomValidator لا يتم إطلاق إذا كان عنصر التحكم هو التحقق من صحة لها قيمة فارغة، لذلك ينبغي أن يكون دائما رافق CustomValidator بواسطة RequiredFieldValidator

بعض خطوات استكشاف الأخطاء وإصلاحها:

  • هل هذا هو المدقق الوحيد في النموذج؟
  • هل تم تمكين التحقق من الصحة على الصفحة؟
  • هل تم تمكين التحقق من الصحة لعنصر التحكم المستهدف؟
  • هل تم تمكين المدقق نفسه؟

وأود أن نلقي نظرة جادة في ValidationGroup.

إذا تم ترك شيئا من هذه المجموعة، أنها لن تحقق بعد الآن. خلاف ذلك، تأكد من أن لم يكن لديك أي خطأ جافا سكريبت (في جانب العميل) وأن الأسلوب الذي "OnServerValidate" لديها نقطة فاصل في الداخل.

هل المصادقة في مجموعة المصادقة على نفس زر الإرسال؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top