Ááá

Další web používající WordPress

Říj

24

Jak se zbavit postback formuláře

Předpokládám, že zhruba chápete, jak to v ASP.NET obvykle funguje: Stránka je obalená formulářem, v něm je skryté pole obsahující informace o stavu aplikace (tzv. ViewState) a veškeré akce na stránce se provádí odesláním tohoto formuláře (tzv. Postback). Viz Jak pracuje ASP.NET.

Také předpokládám, že chápete, že to je špatný přístup. Alternativně je možné ViewState ukládat do session, což je ještě horší…

Pro mě jediným přijatelným řešením je vůbec nepoužívat ViewState.

Především nepoužívat controly, které na ViewState závisí. To se týká dost controlů, které jsou součástí .NET, ale taky ne všech. Například datové zdroje (SqlDataSource, EntityDataSource apod.) se bez ViewState obejdou.

Jak se zbavit toho formuláře

Jednoduše smáznutím tagu <form runat="server"></form> ze zdrojáku stránky. ASP.NET jako takové na něm netrvá.

Vestavěné formulářové controly (TextBox, Button apod.) si jeho přítomnost vynucují, ale ty jsem stejnak už zavrhl kvůli jejich závislosti na ViewState.

Design View

Velkou nepřímou výhodou ASP.NET je design view ve Visual Studiu. Že stránku můžete upravovat ve WYSIWYG editoru, controly si tam přetahovat z toolboxu a hned máte představu, jak to bude vypadat.

Zatímco s PHP nebo ASP.NET MVC upravujete zdroják a dokud to nespustíte v prohlížeči, tak si jen v hlavě představujete, jak to asi bude vypadat a jestli to bude přehledné (design view nic jako <%= Html.TextBox("username") %> nezobrazí).

Bohužel s přetahováním z toolboxu je jistá potíž: Pokud ve stránce není žádný formulář, Visual Studio ho pro vás laskavě vytvoří kdykoli, kdy přetáhnete nějaký server control v design view. S tím nic nezmůžu (ani nikdo na fóru). Je zajímavé, že když control přetahuju do source view, tak to tuhle nasrávku nedělá.

Z toho plyne, že pokud se chci opravdu zbavit formuláře, mám tyto možnosti:

  1. Nepoužívat design view.
  2. Pokaždé to ručně mazat.
  3. Použít nějaký preprocessing.
  4. Využít adaptivní rendering, vytvořit si control adapter pro HtmlForm a tvářit se, že tam žádný server form není.

Kompromisem by mohl být split view, že bych sice psal kód, ale zároveň viděl výsledek. Něco podobného jsem viděl už v několika HTML editorech a nikdy mi to nesedlo. Pochybuju, že si na to zvyknu teď.

Control adapter by vyřešil ten největší problém, kterým je zbytečný formulář v HTML výstupu. Ale nějak se mi to nelíbí, přijde mi to jako hodně ošklivý workaround.

This entry was posted by LLook on 17:35, Říj 24th 2008 and filed in Nezařazené.

Komentáře můžete sledovat přes RSS 2.0 kanál.

Jeden jediný komentář. to “Jak se zbavit postback formuláře”

  1. AvatarDavid Grudl
    Posted: Říj 29th, 2008 at 0.09
    1

    > Také předpokládám, že chápete, že to je špatný přístup. Alternativně je možné ViewState ukládat do session, což je ještě horší…

    Obdivuju tvůj optimismus :-))

SexyComments by BorkWeb

Leave a Reply


© Ááá * WordPress * LoseMyMind * Feed feed