Toon posts:

[ASP.NET] ViewState Probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem met de viewstate uit te krijgen in mijn web form, heb er naar gezocht en overal zeggen ze dat je gewoon simpelweg de enableViewState property van het control op false moet zetten maar dat werkt bij mij niet... zelfs niet met een simple pagina als dit:

Visual Basic .NET:
1
2
3
4
5
6
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" enableViewState="False"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<form id="Form1" method="post" runat="server">
    <asp:TextBox EnableViewState="False" id="TextBox1" runat="server"></asp:TextBox>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
</form>


Als ik op de knop druk blijft de ingevoerde waarde gewoon staat in de textbox :(

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 12-04 16:17
Als je formulier ook daadwerkelijk gesubmit wordt, dan zou het volgens mij gewoon moeten werken. Maar zolang er niets gebeurt als op de knop klikt, ja dan blijft de waarde gewoon in je textbox staan. Of te wel hang een OnClick event aan je button.

[ Voor 13% gewijzigd door stp_4 op 02-11-2005 20:35 ]

stp - PSN ID: stp_4


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 25-04 12:21

Verwijderd

Topicstarter
stp_4 schreef op woensdag 02 november 2005 @ 20:33:
Als je formulier ook daadwerkelijk gesubmit wordt, dan zou het volgens mij gewoon moeten werken. Maar zolang er niets gebeurt als op de knop klikt, ja dan blijft de waarde gewoon in je textbox staan. Of te wel hang een OnClick event aan je button.
Ik gebruik codebehind daar wordt het event afgehandeld.
Thx, dus dit kan niet met viewstate opgelost worden, dan maak ik zelf wel alle textboxes leeg in het prerender event, jammer dat het niet beter opgelost kan worden.

Thanks :)

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-04 07:04
Verwijderd schreef op woensdag 02 november 2005 @ 21:36:
Thx, dus dit kan niet met viewstate opgelost worden, dan maak ik zelf wel alle textboxes leeg in het prerender event, jammer dat het niet beter opgelost kan worden.
Dit is een van de dingen die asp.net makkelijker zouden moeten maken. Het programmeert meer zoals winforms. Een textbox wordt pas leeggemaakt als je dat zelf doet.

In principe gaat het zo: Je hebt een textbox op je form. De user vult hem in en doet een post(back). Asp.net ziet dat er een waarde voor het textbox wordt gepost en vult daarmee de waarde van het textboxcontrol aan de server kant. Wat de user heeft ingevuld kan je vragen aan het textboxcontrol en hoef je niet zelf in de postdata op te zoeken. Omdat Asp.net de waarde van het textboxcontrol laadt na een post, wordt deze ook weer weergegeven bij het renderen als je hem daarvoor niet leegmaakt.

Viewstate wordt gebruikt voor gegevens die normaal gesproken (dus zonder viewstate) niet door de browser worden gepost. Hieronder vallen bijvoorbeeld items in een dropdownbox (de browser post alleen de value van het geselecteerde item). Viewstate zorgt ervoor dat je 1x items aan de dropdown toekent (in een if(!IsPostBack){...}). Daarna hoef je dat niet meer te doen, omdat de viewstate bewaart welke items erin staan. Je kan er dus ook 1tje toe voegen, of 1tje uit halen, zonder heel de lijst opnieuw te vullen.

Al met al is het heel belangrijk dat je weet wat asp.net allemaal voor je regelt en vooral wanneer. Wanneer wordt de postdata in een textbox gezet, wanneer worden de events van knoppen afgehandeld, etc.. Heb er zelf ook mee zitten klooien, maar heb nu eindelijk een beetje door hoe het werkt.