= return the user to the same position in the client browser after postback
Někdy je potřeba, aby po vyvolání poustbacku na stránce, se po jeho vykonání stránka vrátila na stejnou pozici, kde byla před postbackem. Jedná se zejména o delší stránky, které je potřeba např. k tlačítku odskrolovat.
Asp.net samo po postbacku přenačte stránku a vrátí se na její začátek. Tudíž uživatel musí znovu skrolovat na poslední pozici, což jej určitě nepotěší.
Řešení se nabízí několik. Z čitého html se nabízí využití záložek (kotev), kdy se na místo, kam má být proveden odskok, vloží definice záložky
<a href="jmeno_zalozky"></a>
a následně je možné se na tuto záložku přesměrovat
<a href="#jmeno_zalozky>na záložku</a>
<a href="stranka.html#jmeno_zalozky>na záložku</a>
<a href="http://www.nejakyweb.cz/default.aspx#jmeno_zalozky>na záložku</a>
Využití záložek ale má i své nevýhody. Lze se odkázat jen na místa, kde je záložka definována, takže stejně uživateli bude stránka odskakovat. A dále pro přechod na záložku je třeba provést přesměrování, takže provádí-li se v postbacku kód, který mění obsah stránky, tato změna se tím ztratí.
Druhá možnost je využití direktivy, kterou nabízí přímo ASP.Net v objektu @Page. Jedná se o direktivu MaintainScrollPositionOnPostback, která pokud je nastavena na hodnotu true, ASP.Net automaticky po postbacku přesune stránku na pozici, kde byla před vyvoláním postbacku. Defaultně je však tato vlastnost nastavena na hodnotu false a proto je po postbacku stránka zobrazena na začátku.
Někdy je potřeba tuto direktivu nastavit ne pro několik konkrétních stránek, ale pro všechny stránky. To je možné, stačí nastavit hodnotu direktivy v konfiguračním souboru web.config v sekci <pages>.
Ovšem nic není tak krásné, jak vypadá. Užití direktivy může vést i k nečekaným výsledkům, kdy dochází k různým odskokům stránky či se stránka vůbec neposune na poslední pozici. Také je nutné mít zapnutou podporu javascriptu, protože odskoky řeší právě skript na straně klienta.
Bližší informace k direktivámpro @Page lze najít na MSDN.