2010-04-14 9 views
1

처음에는 가장 유사한 것으로 보이는이 질문을 검토 할 시간을 가졌지 만, 선택한 것으로 보이는 솔루션이 내 시나리오에서 작동하지 않습니다. 언급 중 일부는 그것이 취성이거나 부적절한 해결책이라고 주장하는 것에 대해 걱정합니다.응답 리디렉션 - 새 창에서 링크 열기

Response.Redirect to new window

은 - 우리는 기본적으로 사이드 메뉴에 대한 모든 정보가 들어있는 XML 문서가 있습니다.

- 우리는 수많은 URL을 상수 클래스에 저장합니다.

XML 문자열의 요소 중 하나 (레이블이라고도 함)는 메뉴 항목이 LinkButton 또는 Label로 만들어 졌는지 확인하는 데 사용됩니다.

-Links는 응용 프로그램의 모든 링크에 표준으로 사용되는 사용자 정의 컨트롤을 사용합니다 (유사한 스레드의 제안이 작동하지 않는 이유 - 모든 링크를 새 창에서 열지 않으려 고합니다 - 단지 하나)

XML의 문자열 (잘 함수라고 부름)의 요소 중 하나는 Response 문을 사용하여 링크를 생성하는 Switch 문에 사용됩니다.

다음과 같이 보일 수 있습니다. 이 시나리오 감안할 때

switch (function) 
    { 
     case goto 1: 
     string url; 
     if (user_group == 1) 
     { 
      url = Constants.CONSTANT1 
     } 
     else 
     { 
      url = Constants.CONSTANT2 
     } 
     Response.Redirect(url) 
     case goto 2: 
     ...... 
     default: 
     ...... 
     break; 
} 

, 나는이 스위치 문에서 특정 사건이 충족 될 때 신속하게 새 창을 열 수있는 최선의 방법을 찾기 위해 노력하고있어. Response Redirect를 통해 할 수 있습니까? (이것은 논쟁의 여지가 있습니다. 사람들은 할 수 없다고 말하지만 다른 사람들은 그것이 작동한다고 말합니다)? 그렇지 않은 경우 여기에서 어떤 대안을 사용할 수 있습니까?

답변

3

손실되었습니다. 응답 리디렉션은 브라우저로 보내지는 리다이렉트 결과를 CURRENT 창에 표시합니다.

새 창에서 무언가를 여는 유일한 방법은 다른 창 (앵커의 속성)에서 새 URL을 연 HTML 페이지를 내보내거나 자바 스크립트를 내보내는 HTML 페이지를 내보내는 것입니다.

슬프게도이 방법은 메서드를 호출하기 전에 결정해야합니다. 메서드가 호출되면 HTTP 요청이 처리됩니다. 설계자는 의도적으로 브라우저의 기본 인 요청/응답 메커니즘을 무시합니다.

사람들은 서버 측에서 제대로 작동하지 않는다고 말합니다. 서버는 새 브라우저 창으로 요청을 리디렉션 할 수있는 권한이 없습니다. 요청이 시작되기 전에 브라우저에서 시작해야합니다. 보안상의 이유로 아무것도 아닌 경우.

+0

이 설명에 감사드립니다. 다행스럽게도 linkbutton 컨트롤을 연결할 때 대체 메서드를 찾을 수있었습니다. if (function == goto_1) {lnkbtn.Attributes [ "onclick"] = "window.open ('url')"} – user234702

관련 문제