Pergunta

Este é tanto problema de manutenção de código a como um problema de código, mas eu tenho um formulário da Web que nenhuma verificação mais tempo CustomValidator. Ele trabalhou quando eu última tocou o código mais de um ano atrás, mas ele não funciona mais agora que o usuário solicitou algumas mudanças ...

O WebForm contém um drop down ligados a dados com um padrão "- Todos -" ponto com String.Empty como seu valor. Quando o usuário clica no botão enviar, o validador deve verificar que o valor do drop-down não é String.Empty. Eu definir pontos de quebra no código do cliente validação e o código de validação do servidor, mas nenhum fogo.

Onde você começar a procurar? Quais são os suspeitos do costume? Eu, é claro, em comparação a minha cópia de trabalho para o que está no controle de origem, mas nada salta para fora como sendo suspeito.

Apenas no caso que interessa, aqui está o meu código:

<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>
Foi útil?

Solução

Eu noto um par de questões

  • eu não acho que você precisa de um CausesValidation = true se AutoPostBack é definida como false
  • Você não usa grupos de validação, de modo que não pode ser a causa
  • Por que não usar um RequiredFieldValidator?
  • Se você quiser validação fogo em campos vazios, defina a propriedade ValidateEmptyText para true

Outras dicas

A CustomValidator não é acionado se o controle que está validando tem um valor vazio, assim que um CustomValidator deve sempre ser acompanhado por RequiredFieldValidator

Alguns solução de problemas etapas:

  • Este é o único validador no formulário?
  • é a validação ativada na página?
  • É validação habilitado para o controle alvejado?
  • é o próprio validador habilitado?

Gostaria de ter um olhar sério na ValidationGroup.

Se alguma coisa foi deixada de fora do grupo, ele não validar mais. Caso contrário, certifique-se de que você não tem qualquer erro javascript (para o lado do cliente) e que o método que é "OnServerValidate" tem um interior ponto de ruptura.

É o validador no mesmo grupo validador como o botão enviar?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top