TextBox에 대한 ViewState가 비활성화되어 있어도 데이터가 손실되지 않는다는 것을 알고 있습니다. IPostBackDataHandler
인터페이스가 구현되어 있기 때문입니다.왜 라벨의 값이 변경 되었습니까?
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="False"/>
하지만 내 질문에 왜 이런 일이 발생합니까? 레이블에 IPostBackDataHandler
인터페이스가 구현되어 있지 않기 때문에 ViewState가 비활성화 되어도 label이 데이터를 잃지 않는 이유는 무엇입니까?
<asp:Label ID="Label1" runat="server" EnableViewState="False" ViewStateMode="Disabled"/>
텍스트 상자의 정의 :
public class TextBox : WebControl, IPostBackDataHandler,
라벨 정의 :
public class Label : WebControl, ITextControl
내 코드 :
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" EnableViewState="False" ViewStateMode="Disabled" Text="Before click"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="False"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_OnClick"/>
</div>
</form>
그리고 뒤에 코드 :
protected void Button1_OnClick(object sender, EventArgs e)
{
Label1.Text = "Changed.";
}
단추를 클릭 한 후에 내 레이블에서 "클릭하기 전에"볼 것으로 예상했지만 단추를 클릭 한 후 내 레이블에 "변경된"텍스트가 표시됩니다.
"데이터"는 무엇이라고 부릅니까? 라벨과 텍스트 상자의 텍스트? 그렇다면이 텍스트는 마크 업에서 어떻게 설정됩니까? – Andrei
@Andrei 버튼 클릭시 작성합니다. TextBox1.Text = "Changed"; Label1.Text = "변경됨."; viewstate를 비활성화하고 IPostBackDataHandler를 구현하지 않기 때문에 레이블에 데이터가 손실 될 것으로 예상됩니다. –
좋아요, 데이터가 무슨 뜻인지는 분명하지만 "잃어버린"의미는 아닙니다. 클릭하면 텍스트가 바뀝니다. 이제는 무엇을 기대합니까? 페이지가로드되고 컨트롤에 '변경됨'이외의 값이 있습니까? 아니면 다음 포스트 백이 발생하고 컨트롤에 "Changed"이외의 값이 있습니까? – Andrei