Ajax

08/06/2009

Estou usando em uma pagina do meu site o componente "CalendarExtender". Este é um componente da coleção "AjaxToolKit" que é muito conhecida. Quando uso esse componente, obrigariamente, tenho que colocar um "ScriptManager" na pagina. Até ai tudo bem, funciona belezinha porém quando está abrindo esta pagina, se ela nao estiver totalmente carregada, e eu clicar em um botao da tela parcialmente renderizada, aparece o seguinte erro:

Invalid postback or callback argument. Event validation is enabled using 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.

Se eu espero a pagina carregar todinha antes de clicar no botao, o erro nao acontece.
Segue abaixo o trace do erro:

at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument)
at System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.WebControls.TextBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Já vi na internet uma solucao que seria colocar a propriendade "EnableEventValidation" da pagina igual a False mas nao sei em que vai implicar isso. Outra solucao estava ligada ao método "ClientScriptManager.RegisterForEventValidation".

O que devo fazer?
Nefrodata Ltda

Nefrodata Ltda

Curtidas 0

Respostas

Fabio Mans

Fabio Mans

08/06/2009

Coloque o EnableEventValidation="true" e também não permitir que o usuário clique antes da página ser renderizada, para isto utilize o UpdateProgress.

Fabio
GOSTEI 0
Nefrodata Ltda

Nefrodata Ltda

08/06/2009

Eu vi na internet recomendações para colocar "EnableEventValidation=False" e vc me diz para colocar True. Para que serve essa propriendade entao?

Outra coisa. Eu não uso UpdatePanel, por isso nao tem como eu usar o Update Progress.

Ainda aguardo uma solução.
GOSTEI 0
Fabio Mans

Fabio Mans

08/06/2009

    <pages enableEventValidation="false" viewStateEncryptionMode="Never" enableViewStateMac="false" >

Passei errado, realmente é false. Utilize o exemplo acima.


Obtém ou define um valor indicando se a página valida eventos postagem e de retorno de chamada.

http://msdn.microsoft.com/pt-br/library/system.web.ui.page.enableeventvalidation.aspx


É recomendado, mas quando se utiliza Ajax sempre ocorre este erro, neste caso tem que colocar como False.

Fabio


GOSTEI 0
Nefrodata Ltda

Nefrodata Ltda

08/06/2009

Para que serve viewStateEncryptionMode="Never" e enableViewStateMac="false"?
GOSTEI 0
Fabio Mans

Fabio Mans

08/06/2009

Você pode criptografar o ViewState, para que ninguém veja o seus dados, com Never não vai acontecer isso (performance)

viewStateEncryptionMode="Never"


ViewStateMac eu não sei o que é, vou pesquisar e te falo.
enableViewStateMac="false"?

http://msdn.microsoft.com/pt-br/library/system.web.ui.page.enableviewstatemac.aspx

Fabio


GOSTEI 0
Devmedia

Devmedia

08/06/2009

Senhor,
a resposta do consultor respondeu sua dúvidas? Podemos encerrar o chamado?
GOSTEI 0
Devmedia

Devmedia

08/06/2009

Senhor,
por falta de retorno estamos mudando o status do seu chamado para concluído. caso ainda tenha dúvidas sobre o assunto desse post, coloque aqui a sua dúvida q o consultor voltará a lhe atender.
GOSTEI 0
POSTAR