HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Rejtett mezők felhasználása ASP.NET-es alkalmazásokban


Példaprogram letöltése

13494 bájt

E példánkban létrehozunk egy olyan webes kontrolt, melyhez úgy tárolunk egyedi adatot, hogy létrehozunk a web lapon egy rejtett mezőt (<INPUT TYPE=HIDDEN...) programból. A megoldás előnye, hogy minden felhasználóhoz, mely megnyitja ezt a web lapot egyedi adatot tudunk tárolni a lapon lévő minden kontrolhoz.

Mellékelt példa megnyitása előtt szükséges egy HiddenField nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A projekt lefordítása után a ToolBox-ra felvehető egy HiddenFieldControl nevű kontrol.
A HiddenFieldControl kontrol elkészítésénél felülírjuk annak OnPreRender nevű függvényét, mely akkor lesz meghívva, mielőtt a kontrol HTML kódja előállításra kerül, vagyis annak Render függvénye lefut.
Itt a Page osztály RegisterHiddenField függvényét meghívva előállíthatunk egy rejtett mezőt a web oldalon, mely kontrolunkhoz tartozik. Ennek első paraméterében a rejtett mező nevét kell megadnunk, másodikként annak értékét. A név kialakítását a következőképpen végezzük el: a nevet két aláhúzás karakterrel kezdjük, majd ezt követi a kontrol egyedi azonosítója, végül a _Ticks szöveg. A kontrol egyedi azonosítóját a ClientID property-ből tudhatjuk meg. Ez az azonosító a következő módon jön létre: ha a kontrolunk osztályának neve HiddenFieldControl és ebből felhelyezünk egyet a web oldalra, akkor az automatikusan generált név HiddenFieldControl1 lesz, amíg ezt a nevet meg nem változtatjuk. Ha egynél több kontrolt helyezünk el a web lapon, akkor az egyes sorszám automatikusan növekszik.
    protected override void OnPreRender(EventArgs e)
    {
      base.OnPreRender(e);
      if (Page!=null)
      {
        Page.RegisterHiddenField("__" + ClientID + "_Ticks", DateTime.Now.Ticks.ToString());
      }
    }  
Fenti kód lefutása az alábbi HTML kódot eredményezi:
<input type="hidden" name="__HiddenFieldControl1_Ticks" value="631704560661718750" />
Most már csak azt kell megvizsgálnunk, hogy a web oldalon elhelyezett rejtett mezőben tárolt értéket miként tudjuk kiolvasni programból. Erre a Page osztály Load eseményénél kerül sor. A web lap Form-ján több rejtett mező is lehet (pl.: __VIEWSTATE). Ezért egy ciklus segítségével meg kell keresnünk azokat a rejtett mezőket, melyeket a mi kontrolunk példányai hoznak létre. Ezeket az adatokat a Request osztály Form kollekcióján keresztül érhetjük el. Egy for ciklus segítségével végigmegyünk ezen a kollekción és megvizsgáljuk az összes elemét.
    private void Page_Load(object sender, System.EventArgs e)
    {
      for (int i=0; i<Request.Form.Count; i++)
      {
Ha találunk egy olyan rejtett mezőt, mely tartalmazza a Ticks szöveget, akkor megjelenítjük a hozzátartozó értéket egy ListBox-ba.
        if (Request.Form.Keys[i].IndexOf("Ticks")!=-1)
        {
          ListBox1.Items.Add(Request.Form.Keys[i].ToString() + ": " + Request.Form[i].ToString());
        }
      }
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 591. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |