2011-04-23 3 views
7

여러분, 저는 asp.net 3.5 응용 프로그램에서 usercontrol을 가지고 있고 버튼 클릭 이벤트에 대한 일반 텍스트를 전달하고 있습니다. 버튼은 사용자 정의 컨트롤에 있습니다. 하지만 이벤트가 발생하면 다음 오류가 발생합니다.그 ClientScriptManager.RegisterForEventValidation 메서드를 사용하여 유효성 검사를 위해 다시 게시 또는 콜백 데이터를 등록하십시오.

EnableEventValidation = "false"를 웹 양식 페이지에 설정하면 그것은 이벤트를 시작합니다.

<%@ Page EnableEventValidation="false" %> 

그러나 나는 그 사실을 거짓으로 설정하는 것이 좋지 않을 것이라고 생각하고 있습니다. 그래서 대체 무엇입니까? '은 유효성 검사를 위해 다시 게시 또는 콜백 데이터를 등록하기 위해 ClientScriptManager.RegisterForEventValidation 메서드를 사용합니다. '하지만 내가 등록 할 곳은 어디입니까? 감사 !

또한, 일부 AjaxControlToolkit 컨트롤을 내 usercontrol 및 일부 jquery 물건 안에 사용하고 있습니다.

답변

0

활성화 된 상태로두고 이벤트 유효성 검사를 위해 컨트롤을 등록 할 수 있습니다. 다음 제어 eventValidation를 해제하지 않고 작동한다 사전 렌더링에 다음 호출을 추가 또는 페이지 수명주기를 렌더링 :

Page.ClientScript.RegisterForEventValidation(this.UniqueID); 
+0

사용하지 마십시오. 전혀 작동하지 않았다. – tugberk

+0

이 오류를 발생시킵니다. RegisterForEventValidation은 Render() 중에 만 호출 할 수 있습니다. – SwissCoder

+0

Page.ClientScript.RegisterForEventValidation (this.UniqueID);을 사용하여이 문제를 해결할 수있었습니다. 렌더링에서 또한 모든 GV 바인딩을 페이지에서로드 할 수 있습니다! IspostBack http://stackoverflow.com/questions/2968525/templatefield-button-causing-gridview-invalid-postback/12081309#12081309 – JJschk

2

부하 이전

if (!Page.IsPostBack) 

을 시도하고 데이터 그리드에 데이터를 바인딩

+0

work – Woot4Moo

+0

코드가 눈금의 데이터 소스를 변경하려고하면 올바른 것입니다. – Flea

+0

실제로 사실입니다. 업데이트 패널을 사용하지 않고 페이지로드시 각 포스트 백에서 데이터 소스를 바인딩하는 데이터였습니다. –

1

내 상황에서는 page_load에 GridViews 데이터 소스를 업데이트하려고했는데 요청이 포스트 백 이었는지 확인하는 것을 잊어 버렸습니다. 따라서 소스가 변경하려고했는데이 오류가 발생했습니다. 포스트에 대한 수표를 받으면 제대로 작동했습니다. 희망이 사람을 미래에 도움이됩니다.

if (Page.IsPostBack == false) 
    { 
     this.sqlObj = new SqlServer(ConfigurationManager.ConnectionStrings["PdfReceiverConnectionString"].ToString()); 
     this.populateDataGrid(); 
    } 
3

ASP.NET 2.0 이벤트 유효성 검사의 문제점은 모두 또는 아무것도없고 약간 무거운 것입니다. 당신이 여기서해야 할 일을 설명하는 article을 읽었습니다.

기본적으로 사용자 정의 컨트롤의 자식 컨트롤을 이벤트 유효성 검사 엔진에 등록해야합니다.

C# 
protected override void Render(HtmlTextWriter writer) 
{ 
    // Register controls for event validation 
    foreach (Control c in this.Controls) 
    { 
     this.Page.ClientScript.RegisterForEventValidation(
       c.UniqueID.ToString() 
     ); 
    } 
    base.Render(writer); 
} 

VB 
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 

    For Each aControl As Control In Me.Controls 
     Me.Page.ClientScript.RegisterForEventValidation(aControl.UniqueID.ToString) 
    Next aControl 

    MyBase.Render(writer) 
End Sub 

문자열을 어떻게 반환하는지 잘 모르므로 문제가 해결되지 않을 수 있습니다. 다른 article은 이벤트 유효성 검사가 컨트롤의 고유 ID와 전달할 수있는 모든 값의 조합임을 설명합니다. 버튼의 값이 command 인 텍스트를 전달하는 경우이 작업에 문제가있을 수 있습니다.

문제의 원인이되는 이벤트가 클릭 인 경우 사용자 컨트롤의 컨트롤을 등록하면 트릭을 수행해야합니다.