2016-08-24 3 views
0

현재 웹 응용 프로그램을 .Net 3.5에서 .Net 4.6.1로 마이그레이션하는 중입니다. 이 마이그레이션에서 우리는 Response.Redirect의 문제가 UpdatePanel에있을 경우 작동하지 않는 문제에 직면했습니다. 그런 다음 명령을 사용하여 포스트 백을 등록하는 솔루션을 찾았습니다.부분 게시 후 UpdatePanel의 RegisterPostBackControls

ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnViewHistory); 

이 문장을 사용하면 페이지를 리디렉션 할 수 있지만 다른 문제가 발생합니다.

우리는 2 개의 버튼으로 UpdatePanel에서 리피터 컨트롤을 지원합니다. 1. Edit, 2. ShowMessage. 사용자가 페이지로 이동하여 "편집"버튼을 클릭하면 사용자가 편집 페이지로 리디렉션됩니다. 지금은 괜찮습니다. 하지만 사용자가 "ShowMessage"버튼을 클릭하면 jQuery 팝업이 표시되고 같은 페이지에 머물러 있습니다. 팝업 창이 닫히면 편집 버튼이 작동을 멈추고 클릭하면 리디렉션이 발생하지 않습니다. devTool에서 아래 오류를 보여줍니다.

ScriptResource.axd?d=JnUc-DEDOM5KzzVKtsL1tThQiyHdLKhpowp3haErZKv6k2DZphOCMxhYOmqVubfNB4ASzRZ-WmXlbG…:885 Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. 

누군가가 부분 포스트 백 후에 UpdatePanel에서 RegisterPostBackControls를 수행하는 방법을 말해 줄 수 있습니까?

답변

0

당신이 찾고있는 것이 IsInAsyncPostBack이라고 생각합니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack == true) 
     { 
      //do stuff on partial postback 
     } 

     //if you want buttons in an updatepanel Repeater to trigger a full postback you need to register them for it 
     foreach (RepeaterItem item in Repeater1.Items) 
     { 
      Button btn = item.FindControl("Button1") as Button; 
      ScriptManager.GetCurrent(this).RegisterPostBackControl(btn); 
     } 
    } 
+0

리피터 외부 컨트롤은 괜찮지 만 리피터 컨트롤은 어떻게해야합니까? 중계기의 모든 컨트롤을 반복하고 등록해야합니까? –

+0

업데이트 패널의 버튼이 전체 포스트 백을 수행해야하는 경우 예. 내 예제에 추가했습니다. – VDWWD

+0

이것이 해결책이라면 내 응용 프로그램에 300+ 페이지가있는만큼 나에게는 지루한 일이 될 것이라고 생각합니다. 다른 해결책이 있습니까? 또는 당신은 최신 프레임 워크에서 작동하지 않는 이유를 알고 있지만 .net 3.5? –

관련 문제