viewstate에서 일부 상태를 유지해야하는 페이지에 사용자 정의 컨트롤이 있습니다. 다시 게시가 발생할 때마다 viewstate의 항목은 null로 설정됩니다.UserControl 다시 게시 후 Viewstate가 모든 값을 잃습니다.
페이지
사용자 컨트롤은 내가 페이지를로드<%@ Control Language="C#" ClassName="JournalRankRadioButton" %>
<script runat="server">
public String Test
{
get
{
if (ViewState["Test"] == null)
{
ViewState["Test"] = String.Empty;
}
return ViewState["Test"].ToString();
}
set
{
ViewState["Test"] = value;
}
}
public void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.Test = "Test";
}
}
</script>
<asp:CheckBox runat="server" AutoPostBack="true" />
,의 ViewState [ "시험"]에 "테스트",하지만 난 확인란을 선택하면 페이지가하는 할당됩니다
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" %>
<%@ Register TagPrefix="JR" TagName="JournalRanking" Src="~/Controls/JournalRankRadioButton.ascx" %>
<script runat="server">
</script>
<asp:Content ID="Content3" ContentPlaceHolderID="Content1placeholder" Runat="Server">
<asp:Panel CssClass="insetBG1" ID="FormView1" runat="server">
<JR:JournalRanking ID="JournalRanking1" runat="server" ViewStateMode="Inherit" />
</asp:Panel>
</asp:Content>
포스트 백 및 ViewState [ "Test"]가 다시 null입니다. 내가 뭘 놓치고 있니? 나는 페이지와 컨트롤의 EnableViewState에서의 EnableViewState = true를 설정에도 불구하고 그래서 -Update-
는 마스터 페이지에서 거짓이었다. 나는 일을 얻기 위해 제어에
this.Page.Master.EnableViewState = true;
를 추가했다.
도움 주셔서 감사합니다.
어떤 체크 박스입니까? ViewState의 가치는 어디에서 확인하고 있습니까? 더 많은 코드를 입력하십시오 – nmat
이 체크 박스는 포스트 백을 트리거하는 데있어 jus입니다. 포스트 백의 Page_Load 메소드에서 디버거의 ViewState를 점검합니다. –
user467384