我在页面上有一个用户控件,需要在视图状态下保留某些状态。每当发生回发时,视图状态中的条目都会设置为空。UserControl 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>
用户控制
<%@ 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 [ “测试”]被指定为 “测试”,但是当我选中该复选框,页面做回发和ViewState [“测试”]再次为空。我错过了什么?
-Update-
所以,尽管我设置的EnableViewState =在页面和控件的EnableViewState真正是在母版页错误。我不得不
this.Page.Master.EnableViewState = true;
添加到控制才能正常工作。
感谢您的帮助!
什么复选框?你在哪里检查ViewState的值?请添加更多代码 – nmat 2013-05-06 01:34:36
这个复选框 (这是在那里触发回发),我在回调中的Page_Load方法中检查调试器中的ViewState。 –
user467384
2013-05-06 14:51:11