[C#/.Net]Postback ondanks RequiredField

Pagina: 1
Acties:

  • Casteloni
  • Registratie: November 2001
  • Laatst online: 19-04 21:28
Ik wilde even een klein simpel voorbeeldje uitproberen om te zien hoe .Net omgaat met het uitvoeren van verschillende events. Nu staat er in mijn boek (MCAD: Developing Web Applications ) het volgende:

"Als je de tekstbox leeg laat en vervolgens op de knop klikt dan wordt de RequiredFieldValidator getoond ( klopt ), verder worden er geen andere events of postback afgehandeld ( klopt niet? ).

Om dit te testen heb ik het volgende voorbeeldje gemaakt:
HTML:
1
2
3
4
5
6
<form id="Form1" method="post" runat="server">
        <asp:TextBox id="TextBox1" runat="server" AutoPostBack="false"></asp:TextBox>
        <asp:Button id="Button1" runat="server" Text="Klik"></asp:Button>
        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"
                ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
</form>

En de code-behind:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            Response.Write("isPostBack:"+ IsPostBack);
        }

        private void TextBox1_Click(object sender, System.EventArgs e)
        {
            Response.Write("Button Clicked");
        }

        private void TextBox1_Changed(object sender, System.EventArgs e)
        {
            Response.Write("Text Changed");
        }
        private void InitializeComponent()
        {    
            this.Button1.Click +=new EventHandler(TextBox1_Click);
            this.TextBox1.TextChanged +=new EventHandler(TextBox1_Changed);
            this.Load += new EventHandler(this.Page_Load);
        }


Dit alles kan je natuurlijk ook zelf proberen via: http://castelein.xs4all.nl:82/WebApplication1/WebForm1.aspx

Vul niks in, klik op OK, je ziet de RequiredField melding maar alsnog een Postback + tevens een event van het klikken. Zie ik nu iets stoms over het hoofd? :?

Verwijderd

Misschien gaat het boek ervanuit dat je clientside validation aan hebt staan; dan worden de validators (met uitzondering van custom validators dacht ik) met behulp van javascript uitgevoerd en hoeft er dus geen postback plaats te vinden.

edit:
Volgens mij kun je die optie op je form ergens aan- en uitzetten

[ Voor 27% gewijzigd door Verwijderd op 06-01-2006 18:09 ]


  • Casteloni
  • Registratie: November 2001
  • Laatst online: 19-04 21:28
Als je de client-side validation aanzet ( dat kan per validator control ) dan vind er inderdaad geen postback plaats en worden de events ook niet afgehandeld. Echter, dit werkt bij mij niet in Firefox en wel in IE. Lijkt me iets van een security setting van FF?

Ik vind het wel raar dat je aan de client-side controle nodig hebt om iets aan de server-side niet uit te laten voeren. Stel dat ik nu in mijn isPostback=true block de gegevens ga verwerken en bijv de gebruiker doorstuur naar een andere pagina. Dat lijkt mij niet echt een gewenste situatie.

Verwijderd

VampireSlayer schreef op vrijdag 06 januari 2006 @ 18:32:
Als je de client-side validation aanzet ( dat kan per validator control ) dan vind er inderdaad geen postback plaats en worden de events ook niet afgehandeld. Echter, dit werkt bij mij niet in Firefox en wel in IE. Lijkt me iets van een security setting van FF?
Daar heb ik hier geen last van. Tenminste, niet met requiredFieldValidators.
Ik vind het wel raar dat je aan de client-side controle nodig hebt om iets aan de server-side niet uit te laten voeren. Stel dat ik nu in mijn isPostback=true block de gegevens ga verwerken en bijv de gebruiker doorstuur naar een andere pagina. Dat lijkt mij niet echt een gewenste situatie.
Ik begrijp niet precies wat je hier probeert te zeggen, maar volgens mij kun je het server-side ook controleren met een simpele Page.isValid (boolean).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:20

gorgi_19

Kruimeltjes zijn weer op :9

Je moet sowieso op Page.IsValid controleren, anders is je complete fieldvalidator in principe nutteloos.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Casteloni
  • Registratie: November 2001
  • Laatst online: 19-04 21:28
Ok, dus als ik het goed begrijp is het niet voldoende om alleen een Validator control toe te voegen aan de aspx-pagina. Je moet tevens gebruik maken in van de Page.IsValid boolean om te controleren of alle gegevens door de validator heen zijn gekomen.

Dus stel ik maak een registratie formulier met een aantal velden die verplicht zijn. Ik voeg een knop toe ( 'Sla op'). Ik hang een event aan die knop. In dat event ( eigenlijk gewoon een methode ) moet ik het opslaan van gegevens van het registratieformulier in if(Page.IsValid) plaatsen?
Pagina: 1