2009-08-19 2 views
0

웹 응용 프로그램에서 현재 원하는대로 작동하지 않는 버튼이있는 여러 양식이 있습니다.부분적으로 웹 브라우저의 Page Back 기능을하는 양식 단추를 어떻게 만들 수 있습니까?

단추를 클릭하면 일부 동작을 수행 한 다음 응답을 수행합니다. 계산 된 위치로 리디렉션합니다. 문제는 계산 된 위치가 잘못되었습니다.

저는이 리디렉션 로직을 대체하고 웹 브라우저에있는 뒤로/앞으로 기능에 연결하려고합니다. 문제는, 어떻게해야하는지 모르겠다.

ASP.NET 2.0에 이와 같은 것이 존재합니까? 아니면 존재하지 않는 것을하려고합니까?

+1

"문제는 계산 된 위치가 잘못되었습니다"라는 의미를 설명 할 수 있습니까? – JohnFx

+0

@JohnFx : 좋은 질문은 이상적이지 않을 수도있는 것을 구현하려고하기보다는 루트 문제를 해결할 수 있습니다. – Beska

+0

@JohnFx UrlReferrer를 ViewState에 캐싱하여 계산되지만 특정 종류의 페이지에 대해서만 계산됩니다. 내가 그것을 쓰지 않았기 때문에 나는 그것보다 구체적으로 할 수 없다.최종 사용자가 기대하고있는 것이 브라우저의 등 기능과 동일하기 때문에 모든 것이 근본적으로 결함이 있습니다. 문제를 설명하기 위해 페이지 A에서 페이지 B, 페이지 C, 페이지 B로 이동한다고 가정 해보십시오. 다음 버튼 클릭은 리퍼러가 페이지 C가 아닌 페이지 C에서 페이지 C로 리디렉션되는 대신 페이지 A. – Joseph

답변

2

어떻게 버튼에 onclick 클라이언트 이벤트를 추가하는 방법에 대한 : 그것은 내장 아니에요

onclick="history.go(-1); return false;" 
+0

응답을 리디렉션하기 전에 웹 양식의 일부 서버 측 처리가 필요하므로 @Joseph는 서버 측 솔루션을 찾고 있습니다. 옳은? –

+0

+1 MSDN에서 history 개체를 참조하십시오. http://tinyurl.com/lscpkp – JMP

+0

@James 맞습니다. 서버 측 처리를 이미 수행해야하므로 서버 측 솔루션이 필요합니다. 서버 측에서 이미 처리중인 것이 아니라면이 경로를 확실히 통과 할 것입니다. – Joseph

0

당신은 상기 사용자가 방문한 페이지 목록, 순서를 만들 수 -하지만 그 때 정말 털이 가져옵니다. 여러 개의 탭/창을 고려합니다.

귀하의 옵션에 만족할 것 같지 않습니다. 브라우저의 뒤로 버튼은 보안 문제이므로 자바 스크립트에서 위치를 읽을 수 없으므로 기록에서 특정 지점 (끈적 거리는 뒷면 1 페이지, 3 페이지 등)으로 이동해야합니다. 따라서 사용자에게 한 페이지 뒤로 보내는 자바 스크립트를 사용할 수 있지만 쇼핑 카트 유형 응용 프로그램 인 경우 원하는 결과가 아닐 수 있습니다.

0

이 작업을 수행 할 수있는 기능이 없습니다. 문제는 서버에있는 것이 아니라 클라이언트에 히스토리가 있다는 것입니다.

페이지가 하나만 돌아가는 것에 관심이있는 경우 페이지를 렌더링하고 렌더링되는 페이지의 리퍼러를 가져온 다음 버튼 클릭에 대한 이벤트 처리기를 설정합니다. 자바 스크립트에서) 해당 페이지로 이동합니다.

자바 스크립트에서 history.previous 호출의 값을 서버로 다시 전달할 수도 있지만 문제는 누군가가 다시 URL을 전달할 수 있다는 거대한 보안 허점이 있다는 것입니다.

1

다른 답변에서 언급 된 자바 스크립트 버전은 아마도 더 나은,하지만 당신은 뒤에 코드에서 수행하려는 경우, 당신은 할 수 있습니다 : 레퍼러 밖으로 제거있어

Response.Redirect(Request.UrlReferrer.AbsoluteUri); 

그것은 가능합니다, 어떻게 사람에 따라 귀하의 페이지에 도착했지만,이 경우 브라우저의 뒤로 버튼보다 더 나쁜 것은 작동하지 않습니다.

0

이와 비슷한 사항은 정상적으로 작동해야합니다. 초기 페이지로드시 리퍼러를 캡처하십시오. 다시 게시 할 때 리퍼러가 자체로 설정되어 있으므로 다시 게시하는 동안 Request.UrlReferrer에 의존 할 수 없습니다.

 protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       ViewState["previousPage"] = Request.UrlReferrer; 
       // do other stuff as needed 
      } 

     } 

     protected void Button_Click(object sender, EventArgs e) 
     { 
      // do a bunch of stuff 

      Uri referrer = ViewState["previousPage"] as Uri; 
      if (referrer != null) 
       Response.Redirect(referrer.PathAndQuery); 
     } 
관련 문제