use*_*384 6 asp.net viewstate user-controls postback
我在页面上有一个用户控件,需要在viewstate中保持某些状态.每当发生回发时,viewstate中的条目都将设置为null.
页
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
用户控制
<%@ 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" />
Run Code Online (Sandbox Code Playgroud)
当我加载页面时,ViewState ["Test"]被分配给"Test",但是当我选中复选框时,页面会进行回发并且ViewState ["Test"]再次为null.我错过了什么?
-Update-
因此,即使我在页面中设置EnableViewState = true,并且主页面中的控件EnableViewState为false.我不得不补充一下
this.Page.Master.EnableViewState = true;
Run Code Online (Sandbox Code Playgroud)
到控制,以得到它的工作.
谢谢您的帮助!
nma*_*mat 11
您的代码在此完美运行.我能想到的唯一解释是在父控件上禁用了ViewState.JournalRanking位于MasterPage内的页面内.检查您没有EnableViewState=false任何地方,因为这会阻止您检索页面回发上的值.
| 归档时间: |
|
| 查看次数: |
32636 次 |
| 最近记录: |