2010-08-05 5 views
1

HyperLink에서 EnableViewState는 무엇을 의미합니까?HyperLink에서 EnableViewState는 무엇을 의미합니까?

<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink> 

이게 무슨 의미입니까? 그리고 내가 사실이라면 어떻게 될 것인가. 감사! 나는 그것을 보았다. 그러나 정의는 단순한 용어가 아니었다.

답변

4

ViewState는 다시 게시간에 컨트롤 속성의 상태를 유지하는 데 사용됩니다. 이를 사용하지 못하도록하면 코드 숨김 방식으로 프로그래밍 방식으로 설정 한 모든 속성이 페이지 포스트 백간에 유지되지 않습니다. 그러나 (.aspx 페이지에서) 선언적으로 모든 값을 선언하면 아무런 차이가 없습니다.

빠른 예 :

당신이 ViewState에이 영문 마크 업이 활성화 말 :

<form id="form1" runat="server"> 
<div> 
    <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="true">Register</asp:HyperLink> 
    <br /><br /> 
    <asp:Button ID="ButtonPostBack" runat="server" Text="Post Back" /> 
</div> 
</form> 

그리고 당신은 코드 숨김에서이 ​​작업을 수행 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     RegisterHyperLink.ForeColor = System.Drawing.Color.Red; 
    } 
} 

비록 당신 생각 하이퍼 링크의 첫 번째 색상 만 빨간색으로 설정하면 하이퍼 링크는 포스트 백을 수행하는 버튼을 클릭 한 후에도 여전히 빨간색으로 유지됩니다. 이는 ViewState가 HyperLinks 속성의 값을 저장하고 다시 게시 한 후에 다시 작성하기 때문입니다.

정확히 동일한 것을 시도하지만 HyperLink에서 ViewState가 비활성화 된 상태에서 제출 버튼을 클릭하면 HyperLink가 원래 색상으로 되돌아갑니다. 이는 viewstate가 빨간색으로 설정했다는 사실을 "저장"하고 있지 않기 때문입니다. 실용적인 측면에서

당신이 일반적으로 사용하지 않도록 설정할 수 있습니다 viewstate가있는 경우 :

A) 당신은 모든 속성을 설정) 어떤 포스트 백을 B를 수행하지 않습니다 페이지 선언적

정말 viewstate가 I을 이해하려면

' d TRULY Understanding ViewState을 읽는 것이 좋습니다.

+0

멋진 링크 !! 나는 그것을 동료들과 나눌 것이다. – Rabid

+0

아주 좋은 설명, 또한 OP는 이것이 받아 들여진 대답임을 표시해야합니다. – Justin

+0

If 블록 외부에서 해당 코드를 이동하여 모든 포스트 백에 값을 설정하는 옵션 C를 잊어 버렸습니다. –

1

즉, 페이지 요청 (코드 숨김에서 컨트롤의 템플릿 선언에있는 속성이 아님) 중에 NavigateUrl 속성을 설정할 수 있음을 의미합니다.이 속성은 다음과 같은 포스트 백간에 유지됩니다. EnableViewState 속성을 사용하지 않도록 설정 한 경우 NavigateUrl을 할당하면 다음 게시 요청에서 NavigateUrl 속성은 아무 것도 표시되지 않습니다.

이 내용은 Text, TargetImageUrl과 같은 컨트롤의 다른 속성에도 적용됩니다.

기본값은 true입니다. 페이지의 EnableViewState 속성이 선행하며 모든 자식 컨트롤의 속성을 재정의합니다.