Toon posts:

asp.net, usercontrols, refresh, eenmalige actie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Het is een aloud probleem op een nieuwe manier, namelijk met ASP.NET.

Ik heb in m'n web één pagina met verschillende Usercontrols. Als ik op een knop druk, wordt er een actie uitgevoerd en daaarna wordt een ander usercontrol geladen.

Als je dan echter op refresh klikt, wordt die actie incl het laden van dat usercontrol nogmaals uitgevoerd. Ik dacht dit op te lossen door het volgende stukje script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void btnSend_Click(object sender, System.EventArgs e)
{
    //controlleer of er gestuurd mag worden
    CheckToSendMessages();

    //leeg alle textboxen etc.
    ClearAllItems();

    //set een viewstate item
    ViewState["MessageHasBeenSent"] = "true";

    this.PageOwner.currentContentItem.idUserControl = 15;
    //laad het andere usercontrol...
    this.PageOwner.setcurrentContentItem();
}


Verder heb ik dus ook die Method, CheckToSendMessages()

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void CheckToSendMessages()
{
    object Message = ViewState["MessageHasBeenSent"];
    if ( Message != null )
    {
        if ( Message.ToString() != "true" )
        {
            SendMailing();
        }
    }
    else
    {
        SendMailing();
    }
}


Maar als ik nu dus op refresh klik, doetie nog steeds alles zoals, incl. SendMailing();

Heeft iemand een id wat ik fout doe of wat er beter kan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:26

gorgi_19

Kruimeltjes zijn weer op :9

Iets van:
code:
1
Response.Redirect(Request.RawURL)

Moet het probleem ook oplossen.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 04 januari 2003 @ 17:13:
Iets van:
code:
1
Response.Redirect(Request.RawURL)

Moet het probleem ook oplossen.. :)
Neej, want dan kom ik op "home" uit met het "home" usercontrol en dat wil ik niet.

Ik kan dan trouwens gebruik maken van
code:
1
Server.Transfer("default.aspx");

en
code:
1
Response.Redirect("default.aspx");


Weet iemand eigenlijk wat nu precies het verschil is? Is de eerste alleen binnen de eigen site en de tweede om het gehele internet op te gaan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:26

gorgi_19

Kruimeltjes zijn weer op :9

1e is serverside redirect, 2e is clientside redirect.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Volgens mij kan dat ook niet werken, aangezien als je op refresh drukt de form variabelen (en dus ook de viewstate) van de vorige pagina worden meegegeven. Je zou in plaats daarvan een sessie variable oid kunnen gebruiken.

Verwijderd

Topicstarter
gorgi_19 schreef op 04 januari 2003 @ 17:17:
1e is serverside redirect, 2e is clientside redirect.
oki, tnx

Heb naar m'n antwoord kijkend nog andere, betere id'en?

Verwijderd

Topicstarter
TlighT schreef op 04 januari 2003 @ 17:18:
Volgens mij kan dat ook niet werken, aangezien als je op refresh drukt de form variabelen (en dus ook de viewstate) van de vorige pagina worden meegegeven. Je zou in plaats daarvan een sessie variable oid kunnen gebruiken.
Da's idd een mogelijkheid(tnx!), zijn er eventueel ook nog oplossingen zonder sessies?

Verwijderd

in vb.net:
If NOT IsPostBack Then
hier je code
End If

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:26

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 05 January 2003 @ 16:26:
in vb.net:
If NOT IsPostBack Then
hier je code
End If
Je wilt de resubmit na een Refresh eruit halen. Jouw constructie is nodig om uberhaupt een submit uit te kunnen voeren, maar daar gaat het hier niet over.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Verwijderd schreef op 05 January 2003 @ 16:26:
in vb.net:
If NOT IsPostBack Then
hier je code
End If
Dit betekend dat dit alleen mag gebeuren als ik totaal nog geen enkele round-trip heb gehad... Oftewel op de binnenkomstpagina of een popup, maar da's dus niet 't geval...

ps... ik heb het met een session opgelost :|

[ Voor 3% gewijzigd door Verwijderd op 05-01-2003 18:35 ]

Pagina: 1