modalni dialogi...

Pozrdravljeni,

imam dve web formi: ModalDialog.aspx ter Main.aspx.

Na Main.aspx imam html gumb, kateri ob kliku pokliče javascript funcijo:
   function OpenDialog()
   {
     var url='ModalDialog.aspx';
     var dialogParameters=new Object();
     dialogParameters.param1='Vrednost1';
     dialogParameters.param2='Vrednost2';
     window.showModalDialog(url,dialogParameters,'');







   }



Če želim dostopat do param1 ter param2 na klientu lahko to storim z
   
alert(window.dialogArguments['param1']);



Kako lahko na serverju dostopam do param1 ter param2 (ModalDialog.aspx.cs)?


Vem, da bi lahko parametre prenašal tudi s querystring-om, naprimer:
 
function OpenDialogQuery()
   {
     var url='ModalDialog.aspx?param1=Vrednost1&param2=Vrednost2';
     window.showModalDialog(url,'','');




   }



in bi lahko dostopal do parametrov na server-ju (ModalDialog.aspx.cs):
    Request.QueryString["param1"]

Torej, kako lahko dostopam na serverju (ModalDialog.aspx.cs) do param1 ter param2, če kličem na klientu (Main.aspx) funkcijo OpenDialog()?

lp,
Uroš











Avtor: urosn, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

pril
pril - petek, 04. avgust 2006

Hoj, v glavnem modalnih dialogov ni na netu. :-) Stvar je rešena čisto enostavno - operacije, ki zahtevajo da se v ozadju nič ne spreminja se sprožijo samo s parametri z "modalnega" okna, tako narediš aplikacijo ki lepo deluje v "večokenskem" načinu, pa se spremebe v različnih oknih nič ne motijo sabo. Primer take aplikacije je www.informiran.si, sem naredil tako da uporabniki (avtorji) ki sestavljajo obrazce če hočejo uporabljajo več oken hkrati. Pri tem sem se izogibal, da se odpirajo nova okna sama od sebe, ker to upočasni delovni proces. Web in IE vseeno niso tako hitri... Odprejo si oken kot si jih želijo zato da si pohitrijo delo z "vzporednim" večokenskim načinom dela.   lp, pl  

urosn
urosn - četrtek, 03. avgust 2006

Se opravičujem, ker nisem navedel, da uporabljam VS .NET 1.1. Uporabniki so že zaradi drugih aplikacij omejeni na IE (pa tudi drugače gre za intranet), tako da s FF ni problemov. Me pa vseeno zanima, kako se potem v FF rešujejo modalni dialogi?lp,Uroš

pril
pril - četrtek, 03. avgust 2006

IMHO bi moral upoštevati dve stvari: Uporabnik lahko na klientu marsikaj nehote spremeni, pozabi, na silo zapre... (čeprav je to "modal dialog") zato je potrebno da parametre preneseš nazaj. Ker ta metoda uporabi get klic lahko to narediš samo z url-jem, torej queryStringom. Predvsem pa odsvetujem uporabo metode showModalDialog. Na FF ne deluje in lep del uporabnikov ostane z dolgim nosom ;-) Lp, pl

AndrejT
AndrejT - četrtek, 03. avgust 2006

urosn:...bi želel nastavljati parametre na klientu (Main.aspx) in se nato nanje sklicevati na server-ju (ModalDialog.aspx), brez da bi se zgodil PostBack na (Main.aspx). Torej kako potem napolnim Session iz klienta brez da bi šel na server? Si že preveril možnosti, ki ti jih ponujajo ASP.NET 2.0 Client Callbacks...?

urosn
urosn - sreda, 02. avgust 2006

Ok, hvala.Lp,Uroš

bojanv
bojanv - sreda, 02. avgust 2006

Aha. No, lahko si jih pa shranis v kakšen hidden field al pa kakšen span pa jih pole prebereš na serverju. recimo da imas hidden field ki mu das atribut runat=server , potem si noter shranis na klientu vrednosti, na serverju pa potem prebereš z FindControl metodo ta hidden field in dobiš vrednosti. Bi pa na tvojem mestu pogledal tole.Tukaj imas AJAX (Atlas) client podporo. Morda boš našel med njimi kaj pametnega, kar bi mogoče pomagalo rešiti tvoj problem (mogoče klic web service preko client scripta na server itd. ali pa direktno nastavljanje vrednosti na client-u brez postback-a).Session iz klienta bos tezko nastavljal. No sicer so alternative, do katerih pa sam ne znam pridt.

urosn
urosn - sreda, 02. avgust 2006

Najprej hvala za odgovor.Torej glede prve možnosti, bi želel nastavljati parametre na klientu (Main.aspx) in se nato nanje sklicevati na server-ju (ModalDialog.aspx), brez da bi se zgodil PostBack na (Main.aspx). Torej kako potem napolnim Session iz klienta brez da bi šel na server?Druga možnost mi je všeč vendar, če prav razumem, spet prenese parametre, ko se že zgodi PostBack na Main.aspx. Torej rad bi se izognil postback-u in na klientu nastavil parametre. Tako kot mi to omogoča QueryString.Lp,Uroš

bojanv
bojanv - sreda, 02. avgust 2006

Ena izmed možnosti (ki ni najboljša) je, da si shraniš zadeve v Session objekt (torej Session["param1"] = value;) in izpišeš vrednost tega Session-a, druga je, da narediš referenco na prejšnji page (več tukaj). V main.aspx narediš property, funkcijo, ki ti bo vračala parametre. Narediš referenco z direktivo (<%Reference Page="tvojpageizkateregaposiljas.aspx" %>), potem preneseš podatke preko Server.Transfer iz Main.aspx na to stran. Potem pa iz ModalDialog.aspx v code-behindu (torej ModalDialog.aspx.cs) z razredom PreviousPage.TvojProperty kličeš spremenjene vrednosti.Če sem odgovor zgrešil, mi povej....