Avatar billede websam Nybegynder
17. juli 2004 - 01:14 Der er 37 kommentarer og
1 løsning

Spørgsmål til validator function?

hejsa,

Jeg har lavet web user control der indeholder en login formular denne side bliver så includeret på en .aspx side.

Jeg laver så en validering på formularen og det virker også fint, men hvis siden bare reloades uden at der er trykket på login knap ja så viser den fejl beskrivelse fra validator og det var jo lige som ikke meningen.

Hvad gør jeg forkert og hvad skal der til for at validatoren den kun aktiveres ved tryk på login knap ?

/Websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:28 #1
Hvis det reload du snakker om sker ved at der trykkes på en anden knap (el.l.) på formen (er det tilfældet ?), så kan du fikse det ved at sætte den property der hedder CausesValidation til false (altså på de kontroller du ikke ønsker skal eksekvere en validering).
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:32 #2
Alternativt kan du måske have pakket din serverside validering ind i et uheldigt IsPostBack check, istedet for at køre det i en click-handler el.l.
Avatar billede websam Nybegynder
17. juli 2004 - 01:36 #3
Det er som du siger når der trykkes på en anden knap at dette forekommer :o)

Men hvor finder jeg denne CausesValidation henne ? Jeg arbejder med visual studio .NET

/Websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:38 #4
Hvis du er noget du har "tegnet" i designeren, kan du bare markere den knap du ikke ønsker skal eksekvere validering. Højreklikke på den og vælge properties.
Det skulle gerne vise dig et propertyvindue, hvor du kan sætte CausesValidation til false;
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:39 #5
Eller kan du gøre det programmatisk, f.eks. i Page_Load.
Hvis den knap du vil pille ved har id btnButton kan du bare skrive :
btnButton.CausesValidation = false;
Avatar billede websam Nybegynder
17. juli 2004 - 01:43 #6
Ok så fandt jeg den :o) Men hvad sker der så når min login form er at finde på alle sider og jeg har en anden form på siden som også har validering så kan jeg jo ikke sætte den til false ?

/Websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:49 #7
Hmm... den forstod jeg ikke helt.
Arbejder du med flere forms på siden ?
(og i givet fald... Hvilken en af dem er så din serverform ?)
Avatar billede websam Nybegynder
17. juli 2004 - 01:53 #8
Altså min .ascx fil indholder en form til login denne includeres på alle sider på hele projektet. På mine .aspx sider kan der jo forekomme andre formulare så som medlems registrering og dener der jo oxo validering på.

Vil det så sige at jeg ikke kan have min login formular på de sider hvor der er andre formulare ? For det lyder da som en tåbelig ting hvis ikke det skulle kunne lade sig gøre !?!

/Websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 01:58 #9
Ah... kunne heller ikke helt forstå den med at du havde flere forms :o)
Nej det vil det ikke sige, men det vil nok sige, at det nok vil være det mest hensigtmæssige for dig ikke at bruge de medfølgende validator-kontroller til din "login-gruppe".
Avatar billede websam Nybegynder
17. juli 2004 - 02:01 #10
Ok jeg validere på gammeldags maner lige på den formular :o)

Smid et svar så kommer der point !

/websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:03 #11
Nej du kan godt trixe det, men det kræver at du slår begge typer validering (altså sætter både Enabled til false, og EnableClientScript til false).

Din clientside validering må du så undvære, men du kan slå serverside-validering til, hvis du i handleren til den knap du logger ind med skriver følgende :

DinValidatorKontrol.Enabled = true;
Page.Validators.Add(RequiredFieldValidator1);
Validate();
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:06 #12
(Altså... slår begge typer validering fra i designeren - eller programmatisk som skrevet højere oppe).

Den kode jeg så lige skrev til sørger for at proppe din validator ind i sidens validators, og så eksekvere en validering... Hov - den sidste linie var forkert.. Det er selvfølgelig :
DinValidatorKontrol.Validate();
Hvis du bare skriver Validate() køres valideringen på samtlige valideringskontroller.
Avatar billede websam Nybegynder
17. juli 2004 - 02:07 #13
Og oversat til vb hvis du kan det ?
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:11 #14
Me.DinValidatorKontrol.Enabled = True
        Me.Validators.Add(Me.DinValidatorKontrol)
        Me.DinValidatorKontrol.Validate()
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:12 #15
(Du kan undlade Me. hvis du ikke bryder dig om at se på det :o)
Avatar billede websam Nybegynder
17. juli 2004 - 02:15 #16
Og det skal jeg så tilføje under page_load eller button_click ?
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:18 #17
I button_click... Altså den metode der eksekveres når en bruger prøver at logge ind - f.eks. sådan her :

        Me.RequiredFieldValidator1.Enabled = False
        Me.Validators.Add(Me.RequiredFieldValidator1)
        Me.RequiredFieldValidator1.Validate()
        If (Me.IsValid) Then
            Response.Write("VALID")
        Else
            Response.Write("INVALID")
        End If

(Jeg går ud fra at du gør noget lidt andet med resultatet af IsValid end bare at skrive en tekst ud som jeg gør i ovenstående.... Men er du med på den ?)
Avatar billede websam Nybegynder
17. juli 2004 - 02:21 #18
Ja ja den er jeg med på men, men, men der kommer lige denne fejl når jeg kompiler :

Name 'Validators' is not declared.
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:23 #19
Sorry... Glemte lige du havde det i en usercontrol.
Me.Page.Validators.Add(DinValidatorKontrol)
Avatar billede websam Nybegynder
17. juli 2004 - 02:30 #20
Så langt så godt nu får jeg denne fejl :

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 29:
Line 30:    Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Line 31:        Me.fldPasswordValidator.Enabled = True
Line 32:        Me.Page.Validators.Add(Me.fldPasswordValidator)
Line 33:        Me.fldPasswordValidator.Validate()
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:35 #21
Det giver ikke ret meget mening. Kan du debugge dig frem til hvilken linie den fejler på.
Altså... Er det pageobjektet der er null, eller fldPasswordValidator ?
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:36 #22
(jeg har lige lavet det samme her, og jeg får ingen fejlmeddelelser)
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:40 #23
Hvordan ser resten af subben ud ?
Avatar billede websam Nybegynder
17. juli 2004 - 02:41 #24
Det er i denne line den melder fejlen :

Line 31:        fldPasswordValidator.Enabled = True

Hvis det siger dig noget ?
Avatar billede websam Nybegynder
17. juli 2004 - 02:43 #25
Hele subben ser sådan ud :

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
    Me.fldPasswordValidator.Enabled = True
    Me.Page.Validators.Add(Me.fldPasswordValidator)
    Me.fldPasswordValidator.Validate()
    If Page.IsValid Then
        Dim mba As New BizCom()
        Dim Output As String = mba.CheckLogin(fldUsername.Text, fldPassword.Text)
    End If
End Sub
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:45 #26
Jeg kan ikke rigtig se hvordan det skal lykkedes dig at kompilere, og så få den fejl med mindre du har slettet din fldPasswordValidator fra ascx-filen (eller givet den et andet id).
Avatar billede websam Nybegynder
17. juli 2004 - 02:51 #27
Nej det kan jeg heller ikke jeg har lige prøvet at skifte det ud med mit username fetl og der virker det fint så jeg skal lige have set hvad jeg har lavet i min fil :o)

Men ellers tak for hjælpen for denne gang, point er på vej :o)

/websam
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:53 #28
Det var så lidt. Du skriver bare hvis der fortsat er problemer, men jeg hopper nok i æsken her om et øjeblik.

Mvh
Avatar billede websam Nybegynder
17. juli 2004 - 02:54 #29
En sidste ting inden jeg selv daffer i kassen hvordan kan det være at fejl besked vises to gange pr felt ?

Og det var id'et på password dervar sat forkert :o)
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:57 #30
Har du en validationsummary-kontrol på siden også ?
Avatar billede websam Nybegynder
17. juli 2004 - 02:57 #31
Jeps det har jeg
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:58 #32
Så får du den nok både på validatoren, og på din summary.
Avatar billede snepnet Nybegynder
17. juli 2004 - 02:59 #33
Har du for øvrigt også problemer med at acceptere svar ?
(Det er ikke for at hundse med dig... Der er bare et par stykker der har klaget over det, og du skrev at du ville sende point, så jeg tænkte at du måske havde samme problem)
Avatar billede websam Nybegynder
17. juli 2004 - 02:59 #34
Ok jeg kigger på det :o)
Avatar billede websam Nybegynder
17. juli 2004 - 03:00 #35
Nope det var bare mig der ikkehavde fået trykket på knappen :o)
Avatar billede snepnet Nybegynder
17. juli 2004 - 03:03 #36
lolz - ja så er det jo ikke det store mysterie :o)
Avatar billede snepnet Nybegynder
17. juli 2004 - 03:04 #37
Nå - men jeg smutter.

Hold dig munter, og skrive endelig igen hvis der skulle være andet omkring det der driller.

Mvh og Zzzz
Avatar billede websam Nybegynder
17. juli 2004 - 03:05 #38
I lige måde du ZZZzzz
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