vitor^_^ 0 Denunciar post Postado Julho 21, 2010 Desculpem pelo cross publish. Postei a mesma dúvida no forumweb, devmedia e em alguns foruns americanos. Prometo que se encontrar a resposta vou responder como resolver em todos os foruns e até escrever um artigo sobre isso. Tenho algumas dúvidas sobre os clientscripts dos validators. 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: <!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&t=634109895716662567" type="text/javascript"></script> <script src="/VendasPortal/WebResource.axd?d=DmxOgWmpaO0fHDXSwAhjW05EVUsM6EimrZSGOo1mVPk1&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("Button1", "", true, "", "", 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: <!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" /> </form> </body> </HTML> o que eu fiz de errado? valew! Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 22, 2010 Ver o código gerado é complicado, temos que ver o código que esta usando para desenvolver, mas desde já te recomendo a não usar essas validators, eles geram códigos gigatescos e quase incompreensiveis. Procure outras soluções, como javascript e jquery. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites