none
Ajuda com __doPostBack - Migração VS 2003 para 2010 RRS feed

  • 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.




    terça-feira, 24 de dezembro de 2013 12:58

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!!!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Benhur quinta-feira, 26 de dezembro de 2013 16:25
    quinta-feira, 26 de dezembro de 2013 12:58

Todas as Respostas

  • Faltou postar o evento JAVASCRIPT deixa eu ver esse js ?

    Fulvio Cezar Canducci Dias

    terça-feira, 24 de dezembro de 2013 13:17
  • Você digitou alguma comando HTML, JS no TextBox ?

    Leonardo Lourenço Silva


    quinta-feira, 26 de dezembro de 2013 03:09
  • 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
    quinta-feira, 26 de dezembro de 2013 10:56
  • 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!!!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Benhur quinta-feira, 26 de dezembro de 2013 16:25
    quinta-feira, 26 de dezembro de 2013 12:58
  • É 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

    quinta-feira, 26 de dezembro de 2013 16:27
  • É 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

    Feliz por você rapaz!!!

    Fulvio Cezar Canducci Dias

    quinta-feira, 26 de dezembro de 2013 16:29