Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc

Co dělat, když přestane fungovat form submit

Nedávno na jednom z našich serverů přestalo z ničeho nic fungovat odesílání formuláře z běžné aspx stránky. Po stisku tlačítka neproběhl POST a vše vypadalo jako by tlačítko nebylo vůbec stisknuto. Při zkoumání zdrojového kódu vygenerované stránky bylo jasné, že problém bude někde ve validaci formuláře na klientské straně. Kód ve stránce obsahoval v elementu form následující skript <form ... onsubmit="if (!ValidatorOnSubmit()) return false;" ...> Funkce ValidatorOnSubmit() začala vracet neustále false.

function ValidatorOnSubmit()
{
   if (Page_ValidationActive) {
      return ValidatorCommonOnSubmit();
   }
   return true;
 }

Problém musel tedy být někde ve funkci ValidatorCommonOnSubmit(). Tato funkce se nachází v souboru WebUIValidation.js, který je nainstalován v adresáři aspnet_client. Funkce ValidatorCommonOnSubmit() vypadá takto:

function ValidatorCommonOnSubmit()
{
   event.returnValue = !Page_BlockSubmit;
   Page_BlockSubmit = false;
 }
 
Při porovnání s jinými servery kde vše fungovalo správně bylo vidět, že funkce vypadá poněkud jinak...
 
function ValidatorCommonOnSubmit()
{
   var result = !Page_BlockSubmit;
   Page_BlockSubmit = false;
   event.returnValue = result;
   return result;
 }
 
Jak však došlo k tomuto problému? Zdá se, že vše měl na svědomí hotfix pro .NET Framework 1.1, který přepsal funkci ValidatorCommonOnSubmit() její starou verzí, která pochází z doby kdy framework generoval skript pro form element jako <form ... onsubmit="ValidatorOnSubmit();" ...>.

Jako řešení tedy stačí aktualizovat funkci ValidatorCommonOnSubmit().
Zveřejněno 10. ledna 2005 21:46 by mad
Vedeno pod:

Komentář

10. ledna 2005 23:33 by Michal Altair Valášek

# Jiné řešení

Mně se to stalo po instalaci SP1 na .NET Framework. Řešením je prostě spustit aspnet_regiis -c.

Problém je v tom, že update sice změní generování formulářů v ASPX stránkách ale už neaktualizuje skripty v aspnet_client.

Ruční modifikace těchto skriptů mi obecně nepřijde jako šťastné řešení, nikde není zaručeno, že se to časem nepřepíše nějakým jiným souborem.
11. ledna 2005 0:01 by Martin Dohnal

# Re: Jiná řešení

To máš pravdu. Přesně řečeno je dobré zkontrolovat verzi skriptů v cestě %WINDOWS%\Microsoft.NET\Framework\verze frameworku\ASP.NETClientFiles a pak je rozkopírovat příkazem aspnet_regiis -c.


11. ledna 2005 16:41 by Petr

# re: Co dělat, když přestane fungovat form submit

Zrovna nedávno jsem se zabýval tím samým a díky za informaci.
Neregistrovaní uživatele nemužou přidávat komentáře.
 
Vyvojar.cz na prodej!