2011-09-23 5 views
2

내가 ASP.NET 페이지의 Page_Load 이벤트시 HTTP_REFERER을 캡처하는 노력, 그리고 나중에 필요할 때까지 포스트 백 사이를 유지하고있다.페이지로드 사이에 ASP.NET 코드의 공개 속성이 유지됩니까?

public partial class About : System.Web.UI.Page 
{ 
    public string ReferringPage { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      ReferringPage = 
       Request.ServerVariables["HTTP_REFERER"]; 
     } 
    } 

    protected void ImageButton1_Click(
     object sender, ImageClickEventArgs e) 
    { 
     Response.Redirect(ReferringPage); 
    } 
} 

내가 참조 페이지의 URL이 건물에 들어가는 것을 확인했지만, 나는 이미지 버튼을 클릭하면, ReferringPage가 null :이 일을하려고하는 방법은 작동하지 않습니다! 나는 속성의 값이 ViewState에 저장되어 다시 게시 할 때 사용할 수 있다고 생각했지만 이것이 사실이 아님이 밝혀졌습니다. 아니면 내가 잘못하고있는 것일까 요?

답변

2

모든 요청은 페이지 클래스의 새 인스턴스를 생성, 그래서 아무 아무 것도 지속을 의미하지 않습니다.

1

아니요, 당신은 숨겨진 필드에 참조 페이지를 저장할 수 있도록 [가장] 제어 등록, 포스트 백에 유지됩니다, 또는 페이지의 ViewState 속성에

나는이 조각을 많이 사용

를 예상대로

private string ReferringPage 
{ 
    get 
    { 
     return (string)ViewState["ReferringPage "]; 
    } 
    set 
    { 
     ViewState["ReferringPage"] = value; 
    } 
} 
ReferringPage 일을 할 것입니다. 그러나 모든 단단한 약물과 마찬가지로 ViewState를 악용하는 것은 해로운 것으로 간주됩니다. http://anthonychu.ca/post/aspnet-viewstate-abuse

당신은뿐만 아니라 포스트 백에 계속하지만, 사용자가 다른 페이지로 이동하는 경우에도, 당신은 당신이 동일한 (사용자) 세션

에서 탐색을 통해 값을 지속 할 수있는 세션에의 ViewState를 변경하려면 ReferringPage 변수가 필요한 경우

그리고 마지막으로, 당신은

http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage.aspx

(데이터 지속성 방법에 대한 링크의 추가 보너스와 함께) webfoms의 서버 전송 메커니즘을 살펴 할 수 있습니다
관련 문제