Avatar billede paahlman Nybegynder
02. september 2005 - 14:01 Der er 11 kommentarer og
1 løsning

Problemer med CustomValidator

Hej eksperter.

Jeg har en side hvorpå jeg har en masse validering. De fleste steder er en RequiredFieldValidator nok men et enkelt sted skal bruge en CustomValidator. Jeg har skrevet koden og den virker sådan set godt nok. Under test viser det sig at min CustomValidator ikke virker hver gang. Faktisk virker den kun hvis en eller flere af mine RequiredFieldValidators også fanger en fejl. Jeg går ud fra at det er et spørgsmål om events men jeg aner ikke hvordan eller hvilken event jeg skal trigge.
Nogle idéer?
Avatar billede snepnet Nybegynder
03. september 2005 - 14:08 #1
kan du ikke vise os koden til din custom validator?
mvh
Avatar billede paahlman Nybegynder
06. september 2005 - 08:41 #2
jo da :-)

fil.aspx

<asp:CustomValidator id="cuvPDNumber" runat="server" ControlToValidate="tbxPDNumber" ErrorMessage="* A P/D number  must contain 9 characters!"></asp:CustomValidator>

fil.cs

private void cuvPDNumber_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
        string strInput;
    strInput = args.Value;
    strInput.Trim();
           
    if(strInput == "")
    {
          cuvPDNumber.ErrorMessage = "** Please type a P/D Number";
      args.IsValid = false;
      return;
    }

    if(strInput == "0")
    {
      cuvPDNumber.ErrorMessage = "* Please type a correct P/D Number";
      args.IsValid = false;
      return;
    }

    args.IsValid = true;
    return;

}

private void InitializeComponent()
{
this.cuvPDNumber.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.cuvPDNumber_ServerValidate);
}

det er det hele, ret simpelt men jeg forstår stadig ikke hvorfor det ikke spiller :-(
Jeg har mistanke om at der er noget i eventrækkefølgen eller pageload jeg ikke forstår.
Avatar billede paahlman Nybegynder
06. september 2005 - 08:51 #3
kære eksperter, nu fatter jeg det slet ikke. Partnummeret (PDNumber) må ikke være nul eller ingenting. Min CunstomValidator virker fint på strInput == "" i hhv. explorer og firefox men strInput == "0" virker ikke i explorer og kun af og til i firefox???

mvh.
Avatar billede snepnet Nybegynder
06. september 2005 - 09:03 #4
har du prøvet at debugge og se hvad der sker?
mvh
Avatar billede snepnet Nybegynder
06. september 2005 - 09:12 #5
... desuden - hvis din customvalidator skal opføre sig helt som de andre, bør du levere en clintsidevalidering også.
mvh
Avatar billede paahlman Nybegynder
06. september 2005 - 09:12 #6
jeg ville gerne men kan ikke. jeg skal udvikle direkte på serveren (på et testsite) og kan derfor ikke få lov til at debugge :-(
Avatar billede snepnet Nybegynder
06. september 2005 - 09:16 #7
så brug traceren istedet:

sørg for at tracing er slået til i din web.config
<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" localOnly="true"/>

hvis du sætter pageOutput="false" kan du finde dit trace på :
http://host/site/trace.axd

du kan så i din kode skrive til tracet - her er par eksempler:
(overvej for øvrigt at benytte string.Empty istedet = "")

private void cuvPDNumber_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
    Trace.Write("CustomValidator","Starting servervalidation");
    string strInput;
    strInput = args.Value;
    strInput.Trim();
           
    if(strInput == "")
    {
      Trace.Write("CustomValidator","String = empty string");
      cuvPDNumber.ErrorMessage = "** Please type a P/D Number";
      args.IsValid = false;
      return;
    }

    if(strInput == "0")
    {
      cuvPDNumber.ErrorMessage = "* Please type a correct P/D Number";
      args.IsValid = false;
      return;
    }

    args.IsValid = true;
    return;

}

mvh
Avatar billede snepnet Nybegynder
06. september 2005 - 09:17 #8
ups - du skal selvfølgelig ikke sætte localOnly="true" men localOnly="false".
mvh
Avatar billede paahlman Nybegynder
06. september 2005 - 09:18 #9
Det med clientsidevalideringen kan måske forklare det. Eksempelvis når brugeren skal cleare formen skal man trykke to gange på cancel for at fejlbeskeden fra customvalidatoren slettes mens de andre valitorers fejlbeskeder slettes første gang! det er som om den lige har brug for et serverroundtrip mere end de andre. hvis det også er tilfældet med validering serverside forstår jeg godt at det ikke lykkes.
Avatar billede snepnet Nybegynder
06. september 2005 - 09:20 #10
den har bestemt brug for et roundtrip når der ikke er lavet clientside validering - men det er nu ikke slemt at lave.... du kan snuppe modellen herfra:
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx
mvh
Avatar billede paahlman Nybegynder
06. september 2005 - 09:34 #11
det ser ud til at virke.
Send lige et svar så skal jeg opdatere din pointliste ;-)
Avatar billede snepnet Nybegynder
06. september 2005 - 09:36 #12
:oD - får du her.
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester