Window.ShowModalDialog och ASP.NET

Permalänk
Medlem

Window.ShowModalDialog och ASP.NET

Mitt problem är att jag i ShowModalDialog länkar till en .aspx sida där jag hämtar värden ur en databas. So far so good. Det funkar. Sen ska användaren kunna ändra och ta bort dessa värden. Förändringarna sker i databasen och man stänger fönstret.

Nu kommer det tråkiga...när man öppnar ShowModalDialog igen så ligger värdena från första början kvar.

Låt säga att vi har äpple och päron från början, tar bort päron och ser i databasen att bara äpple finns kvar. Stänger fönstret. Men ändå ligger båda kvar.

Om man däremot hämtar värdena på nytt via en knapp så visas rätt värden, men samma problem uppstår så fort man stänger och öppnar dialogen igen.

Någon som har en aning. Det sker alltså ingen postback mer än första gången och då ligger de värdena kvar hela tiden. VARFÖR?

// Calleman

Permalänk
Medlem

Cache?

Visa signatur

10 RTFM
20 RTFAQ
30 STFW

Permalänk
Medlem

Självklart är det så...men varför???

I vanliga fall går pageload in på .aspx sidor...men inte när jag använder ModalDialog. Någon som vet varför?

Permalänk
Medlem

Om du ser till så att klienten inte cachar, vad händer då?

[EDIT]
Jag är inte klockren på specifik MS-teknik men Window.ShowModalDialog är väl JScript? Ungefär som window.open? Annars erkänner jag att jag är helt ute och cyklar

Visa signatur

10 RTFM
20 RTFAQ
30 STFW

Permalänk
Medlem

Ja, det är javascript som jag slängt in i .NET. Men vill undvika att sidan cachas, går det att göra?

FIXAT! Måndagmorgon var tydligen en bra dag, var bara att lägga till följande rader med kod.

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 1, 1, 0, 0, 0, 0));

Permalänk
Medlem

Du måste skicka HTTP response headers som säger till webbläsaren att inte cache:a. Cache:ing är en hel vetenskap för sig men det finns resurser på nätet. Det är för mycket att beskriva i en tråd på ett forum. Börja här t.ex.

[off topic]
ShowModalDialog är INTE JavaScript. Det är JScript vilket är Microsofts implementation av JavaScript. Skillnaden är subtil men ack så viktig. ShowModalDialog fungerar bara i webbläsare som har implementerat denna metoden på objektet window, vilket idag bara är IE såvitt jag vet. Om du inte har nytta av de speciella egenskaper ShowModalDialog ger så är det bättre att använda den mer vedertagna open på samma objekt (window alltså).

[edit]
Nu kan det ju vara så att du utvecklar för ett intranät där det bara finns IE, då är det ju helt ok. Tänkte inte på det scenariot.

Visa signatur

10 RTFM
20 RTFAQ
30 STFW

Permalänk
Medlem

Tack för dina tips. Vet att showmodal bara fungerar i IE, men som du mkt riktigt skrev själv så utvecklar jag mot ett intranät.

Ska ta en titt på din länk, cache har jag verkligen inte koll på. Skönt nog så fungerade min lösning ovan i alla fall den här gången.