2

ASP.NET 응용 프로그램에서 UpdatePanel을 사용하려고합니다. 불행히도, 나는 이것을 할 수 없다는 것입니다. if I am using Server.Transfer() in my application.UpdatePanel + Server.Transfer 문제에 대한 해결 방법이 있습니까?

응용 프로그램의 해당 구성 요소를 수정할 수 없습니다. 아키텍처에서 Server.Transfer()를 광범위하게 사용합니다. 기본적으로 모든 페이지 요청은이 방법을 사용합니다. 이 문제에 대한 해결 방법이 있습니까? 전체 페이지 포스트 백을해야하는 것은 요즘 너무 유행이 아닙니다. ...

답변

4

나는 그것을 얻었습니다! Og for strange foreign language blogs

수정하려면 ASP.NET AJAX 클라이언트 측 프레임 워크가 Server.Transfer() 호출의 실제 대상에서 직접 부분 요청을 직접 지시 할 수 있습니다. 나는 가능한 부작용이 무섭다. (인프라가 목적을 가지고 있음을 알고있다.)하지만 지금까지는 잘 작동하고있는 것 같다. 여기

내 페이지의 Load 이벤트에서 호출 된 문제를 해결하는 방법입니다 :

/// 
    /// Adds to the page a JavaScript that corrects the misbehavior of AJAX when a page is target of a Server.Transfer call. 
    /// 
    protected void AjaxUrlBugCorrection() 
    { 
     string actualFile = Server.MapPath(AppRelativeVirtualPath); 
     string redirectFile = Server.MapPath(Context.Request.FilePath); 
     string baseSiteVirtualPath = HttpRuntime.AppDomainAppVirtualPath; 

     if (actualFile != redirectFile) 
     { 
      System.Text.StringBuilder sbJS = new System.Text.StringBuilder(); 
      string actionUrl = string.Format("'{0}'", baseSiteVirtualPath + AppRelativeVirtualPath.Replace("~", String.Empty)); 
      sbJS.Append("Sys.Application.add_load(function(){"); 
      sbJS.Append(" var form = Sys.WebForms.PageRequestManager.getInstance()._form;"); 
      sbJS.Append(" form._initialAction = " + actionUrl + ";"); 
      sbJS.Append(" form.action = " + actionUrl + ";"); 
      sbJS.Append("});"); 
      ClientScript.RegisterStartupScript(this.GetType(), "CorrecaoAjax", sbJS.ToString(), true); 
     } 
    } 
+0

샌더는 aspx 코드를 게시 할 수 있습니다. –

+0

aspx 변경 사항이 없습니다. Page_Load에서이 메서드를 호출하면 페이지의 모든 UpdatePanels이 작동하기 시작합니다. – Sander

0

이 더 적절한 방식으로 작동한다 :

당신이 컨트롤의 이벤트 핸들러에서 Server.Transfer를 호출하는 경우 단지 업데이트 패널의 트리거 부분에 PostBackTrigger로 해당 컨트롤을 등록 :

<Triggers> 
    <asp:PostBackTrigger ControlID="controlId" /> 
</Triggers> 
0

을 Response.Write ("window.open ('새 탭 페이지의 링크를' '_공백');"); Response.Write ("this.window.location = '다른 페이지에 대한 링크';");

+0

안녕하세요. 귀하의 대답에 대한 몇 가지 맥락을 제공해주십시오. 링크 전용 및 코드 전용 답변은이 사이트의 표준을 따르지 않습니다. http://stackoverflow.com/help/how-to-answer –

+0

Server.Transfer를 사용할 때 팝업 페이지가 내 목록 페이지에 있습니다. 내 팝업 페이지로 이동하십시오. 제대로 리디렉션되지 않았습니다. 로드시 팝업이 표시되고 위치 표시 줄에서 링크가 변경되지 않습니다. 이상한 그래서이 코드를 사용하여 문제를 해결하고 잘 작동합니다. –