Mam kontrolę użytkownika na stronie, która musi utrzymywać stan w stanie wyświetlania. Ilekroć nastąpi odświeżenie, wpisy w stanie widoku zostaną ustawione na wartość null.UserControl Viewstate traci wszystkie wartości po odświeżeniu strony
Page
<%@ 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>
kontrolny użytkownika
<%@ 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" />
Kiedy załadować stronę, ViewState [ "Test"] zostanie przypisany do "Test", ale kiedy zaznaczyć pole wyboru, strona robi odświeżenie i parametr ViewState ["Test"] ponownie ma wartość null. czego mi brakuje?
-Update-
Więc, mimo że zachodziło EnableViewState = true na stronie i EnableViewState kontrolnej była fałszywa na stronie głównej. Musiałem dodać
this.Page.Master.EnableViewState = true;
do Kontroli aby zmusić go do pracy.
Dzięki za pomoc!
Jakie pole wyboru? A gdzie sprawdzasz wartość ViewState? Proszę dodać więcej kodu – nmat
To pole wyboru (Jest tam, aby wywołać odświeżenie) i sprawdzam ViewState w debuggerze w metodzie Page_Load na poczcie zwrotnej. –
user467384