Array
(
)

Erro com validators

Vitor Rubio
   - 21 jul 2010

  Postei essa dúvida em outro fórum, mas ainda não obtive resposta:

Uso asp.net 1.1 com visual studio 2003.Tenho dois servidores com windows 2003 server e iis 6.0 e a máquina de desenvolvimento com windows xp sp2
Uma página simples com um asp TextBox, um button e um requiredi field validator e um validation summary:No servidor de desenvolvimento funciona: quando eu clico no botão ele não dá submit, mas mostra o que está errado e mostra o alert com o summary. Nos servidores de produção não consegui fazer funcionar.
Esse é o código gerado pelo windows xp:
#Código

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML>  <HEAD>    <title>teste</title>    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">    <meta name="CODE_LANGUAGE" Content="C#">    <meta name=vs_defaultClientScript content="JavaScript">    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">  </HEAD>
  <body MS_POSITIONING="GridLayout">	    <form method="post" action="teste.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1"><div class="aspNetHidden"><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTcyMzUyODc3OWRkgRhvsR5UK3vvocXrO1qomevAnDqvQLEIr9xosJzc144=" /></div>
<script type="text/javascript">//<![CDATA[var theForm = document.forms['Form1'];if (!theForm) {    theForm = document.Form1;}function __doPostBack(eventTarget, eventArgument) {    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {        theForm.__EVENTTARGET.value = eventTarget;        theForm.__EVENTARGUMENT.value = eventArgument;        theForm.submit();    }}//]]></script>

<script src="/VendasPortal/WebResource.axd?d=Y9yRm5JYEUG0635f1BSfHg2&amp;t=634109895716662567" type="text/javascript"></script>
<script src="/VendasPortal/WebResource.axd?d=DmxOgWmpaO0fHDXSwAhjW05EVUsM6EimrZSGOo1mVPk1&amp;t=634109895716662567" type="text/javascript"></script><script type="text/javascript">//<![CDATA[function WebForm_OnSubmit() {if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;return true;}//]]></script>
<div class="aspNetHidden">
	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLCiPquAgLs0bLrBgKM54rGBhzafW1C+OfPIJPDNNAdnRbXCW+QuT0S6TfTUi17hdWP" /></div><input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; POSITION: absolute; TOP: 56px; LEFT: 264px" /><input type="submit" name="Button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button1&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="Button1" style="Z-INDEX: 102; POSITION: absolute; TOP: 112px; LEFT: 264px" /><span id="RequiredFieldValidator1" style="Z-INDEX:103;POSITION:absolute;TOP:56px;LEFT:440px;visibility:hidden;">RequiredFieldValidator</span><div id="ValidationSummary1" style="Z-INDEX:104;POSITION:absolute;TOP:104px;LEFT:384px;display:none;">
</div>
     <script type="text/javascript">//<![CDATA[var Page_ValidationSummaries =  new Array(document.getElementById("ValidationSummary1"));var Page_Validators =  new Array(document.getElementById("RequiredFieldValidator1"));//]]>
</script>
<script type="text/javascript">//<![CDATA[var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] : document.getElementById("RequiredFieldValidator1");RequiredFieldValidator1.controltovalidate = "TextBox1";RequiredFieldValidator1.errormessage = "RequiredFieldValidator";RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";RequiredFieldValidator1.initialvalue = "";var ValidationSummary1 = document.all ? document.all["ValidationSummary1"] : document.getElementById("ValidationSummary1");ValidationSummary1.showmessagebox = "True";//]]></script>

<script type="text/javascript">//<![CDATA[
var Page_ValidationActive = false;if (typeof(ValidatorOnLoad) == "function") {    ValidatorOnLoad();}
function ValidatorOnSubmit() {    if (Page_ValidationActive) {        return ValidatorCommonOnSubmit();    }    else {        return true;    }}        //]]></script></form>	  </body></HTML>


Esse funciona. O que não funciona é assim:#Código
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML>  <HEAD>    <title>teste</title>    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">    <meta name="CODE_LANGUAGE" Content="C#">    <meta name=vs_defaultClientScript content="JavaScript">    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">  </HEAD>
  <body MS_POSITIONING="GridLayout">	    <form name="Form1" method="post" action="teste.aspx" id="Form1"><input type="hidden" name="__VIEWSTATE" value="dDwyNTc1Nzk2ODE7Oz5UWTPjTUHaDxxWQBbNGMA0ef1erw==" /><input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; POSITION: absolute; TOP: 56px; LEFT: 264px" /><input type="submit" name="Button1" value="Button" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Button1" style="Z-INDEX: 102; POSITION: absolute; TOP: 112px; LEFT: 264px" />&nbsp;
     </form>	  </body></HTML>





o que eu fiz de errado?
valew!

Netasper
   - 22 jul 2010

Voce esta usando browser IE 8 em algum deles? Verificou o Nivel de Compatibilidade? NO IE 8 tive probolemas como este seu.

Outra coisa é CausesValidation do Botão, esta ok?

[]s

Vitor Rubio
   - 22 jul 2010

O Causes Validation do botão está true. E o enable client script dos validators também está true.Não é incompatibilidade com browser, porque, como você pode ver, o código html/javascript gerado pelos dois servidores está diferente.
Nos servidores onde não funciona, o validador chama no onclick do botão uma função que não existe no resto da página (Page_ClientValidate). 
Verifiquei que essa função existe nos arquivos .js da pasta aspnet_client. Não sei porque esse código (ou a chamada a ele) não está sendo incorporado nas minhas páginas.
No servidor de homologação eu consegui resolver o problema instalando o .netframework 2.0 sp1, mas meu projeto é para o framework 1.1 e eu não gostaria de instalar outro frwk, não sei o q pode acontecer.
Se eu colocar no header das minhas páginas uma referencia para os scripts na pasta aspnet_client poderia funcionar, mas o .net frwk deveria fazer isso automaticamente.
Independentemente de browser, o código q funciona funciona em todos, até no opera, ie8 etc. O q não funciona não funciona em nenhum deles.