Usuário com melhor resposta
Ajuda com __doPostBack - Migração VS 2003 para 2010

Pergunta
-
Ola pessoal!
Estou precisando de uma ajuda, estou migrando um sistema que foi feito no VS2003 para VS2010.
E tenho uma situação que no VS2010 não está funcionando, tenho situações que em componentes textbox no evento onBlur ele força um PostBack, tudo por evento javascript ao perder o foco (onBlur) do componente (textbox) eu aciono o __doPostBack(textbox) via javascript.
Mas no VS2010 me retorno o seguinte erro :
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
Pesquisando eu achei que desativando no html em Page o EnableEventValidation="false" resolve, mas não é muito seguro usar, pergunto alguém tem alguma outra maneira de forçar um postback via código, imagino que como eu usava no VS2003 não seja mais usável atualmente deve haver outros métodos.
Respostas
-
Ola Fulvio!
Segue o exemplo do código:
No text o evento onBlur:
textBox.Attributes.Add("onBlur", "javascript:DaPostback('textBox')")
E no HTML a função DaPostback:function DaPostback(txt)
{
var f = document.forms[0].elements[txt];
if (f.value != "")
{
__doPostBack('buton1');
}
}
Faça esse incremento no seu código por favor
protected override void Render(HtmlTextWriter writer) { Page.ClientScript.RegisterHiddenField("buton1", "buton1"); base.Render(writer); }
ele é da própria pagina é só escrever override + espaço do teclado que ele vai aparecer
viu que eu coloque
Page.ClientScript.RegisterHiddenField("buton1", "buton1");
Ali aonde ta buton1 e buton1 se coloca o nome do seu botão e deixo o resto do código igual!
Por favor teste acredito que vai resolver boa parte dos seus problemas!!!
- Marcado como Resposta Benhur quinta-feira, 26 de dezembro de 2013 16:25
Todas as Respostas
-
- Sugerido como Resposta Fulvio Cezar Canducci Dias quinta-feira, 26 de dezembro de 2013 03:16
-
-
Ola Fulvio!
Segue o exemplo do código:
No text o evento onBlur:
textBox.Attributes.Add("onBlur", "javascript:DaPostback('textBox')")
E no HTML a função DaPostback:function DaPostback(txt)
{
var f = document.forms[0].elements[txt];
if (f.value != "")
{
__doPostBack('buton1');
}
}
- Editado Benhur quinta-feira, 26 de dezembro de 2013 10:57 Ajuuste
-
Ola Fulvio!
Segue o exemplo do código:
No text o evento onBlur:
textBox.Attributes.Add("onBlur", "javascript:DaPostback('textBox')")
E no HTML a função DaPostback:function DaPostback(txt)
{
var f = document.forms[0].elements[txt];
if (f.value != "")
{
__doPostBack('buton1');
}
}
Faça esse incremento no seu código por favor
protected override void Render(HtmlTextWriter writer) { Page.ClientScript.RegisterHiddenField("buton1", "buton1"); base.Render(writer); }
ele é da própria pagina é só escrever override + espaço do teclado que ele vai aparecer
viu que eu coloque
Page.ClientScript.RegisterHiddenField("buton1", "buton1");
Ali aonde ta buton1 e buton1 se coloca o nome do seu botão e deixo o resto do código igual!
Por favor teste acredito que vai resolver boa parte dos seus problemas!!!
- Marcado como Resposta Benhur quinta-feira, 26 de dezembro de 2013 16:25
-
É isso ai Fulvio, tiro certeiro.
Abraço.Caso alguém precise em VB como eu, segue pequenos ajustes.
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Page.ClientScript.RegisterHiddenField("btnLogin", "btnLogin")
MyBase.Render(writer)End Sub
-
É isso ai Fulvio, tiro certeiro.
Abraço.Caso alguém precise em VB como eu, segue pequenos ajustes.
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Page.ClientScript.RegisterHiddenField("btnLogin", "btnLogin")
MyBase.Render(writer)End Sub