Frage

Das ist so viel ein Code Wartungsproblem als ein Code Problem, aber ich habe ein Webformular, die nicht überprüft länger CustomValidator. Es funktionierte, als ich das letzte Mal den Code vor über einem Jahr berührt, aber es funktioniert nicht mehr jetzt, dass der Benutzer einige Änderungen angefordert hat ...

Das Webformular enthält einen datengebundenen Dropdown mit einem Standard „- Alle -“ Artikel mit String.Empty als Wert. Wenn der Benutzer auf die Schaltfläche zum Senden klickt, sollte der Prüfer überprüfen, ob der Wert des Dropdown ist nicht String.Empty. Ich habe in dem Client-Validierungscode Bruchstellen festgelegt und der Server Validierungscode, aber weder Feuer.

Wo werden Sie auf der Suche beginnen? Was sind die üblichen Verdächtigen? Ich habe, natürlich, im Vergleich meine Arbeitskopie zu dem, was in der Quellcodeverwaltung ist, aber nichts herausspringt als verdächtig zu sein.

Für den Fall, es darauf ankommt, hier ist mein Code:

<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>
War es hilfreich?

Lösung

Ich bemerke ein paar Probleme

  • Ich glaube nicht, dass Sie eine Causes brauchen = true, wenn Autopostback auf false gesetzt ist
  • Sie verwenden Sie keine Validierung Gruppen, so dass nicht die Ursache sein kann
  • Warum nicht ein RequiredFieldValidator verwenden?
  • Wenn Sie die Validierung auf leere Felder feuern wollen, stellen Sie die ValidateEmptyText Eigenschaft auf true

Andere Tipps

Ein CustomValidator nicht ausgelöst, wenn die Steuer es Validierung wird einen leeren Wert hat, so ein CustomValidator sollte immer von RequiredFieldValidator begleitet werden

Einige Schritte zur Fehlerbehebung:

  • Ist dies der einzige Validator auf dem Formular?
  • Ist die Validierung auf der Seite aktiviert?
  • Ist die Validierung für die gezielte Steuerung aktiviert?
  • Ist der Prüfer selbst aktiviert?

Ich würde am Validation einen ernsten Blick nehmen.

Wenn etwas ist aus der Gruppe gelassen worden, wäre es nicht mehr bestätigen. Andernfalls stellen Sie sicher, dass Sie (für die Client-Seite) keine Javascript-Fehler haben, und dass die Methode, die „OnServerValidate“ hat eine Bruchstelle im Inneren ist.

Ist der Prüfer in der gleichen Prüfung Gruppe als Submit-Button?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top