加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – UserControl Viewstate在回发后丢失所有值

发布时间:2020-11-17 12:13:01 所属栏目:asp.Net 来源:互联网
导读:我在页面上有一个用户控件,需要在viewstate中保持某些状态.每当发生回发时,viewstate中的条目都将设置为null. 页 %@ Page Title= Language=C# MasterPageFile=~/Main.master %%@ Register TagPrefix=JR TagName=JournalRanking Src=~/Control

我在页面上有一个用户控件,需要在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>

用户控制

<%@ 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 [“Test”]被分配给“Test”,但是当我选中复选框时,页面会进行回发并且ViewState [“Test”]再次为null.我错过了什么?

-Update-

因此,即使我在页面中设置EnableViewState = true,并且主页面中的控件EnableViewState为false.我不得不补充一下

this.Page.Master.EnableViewState = true;

控制让它工作.

谢谢您的帮助!

解决方法

您的代码在此完美运行.我能想到的唯一解释是在父控件上禁用了ViewState. JournalRanking位于MasterPage内的页面内.检查您在任何地方都没有EnableViewState = false,因为这会阻止您检索页面回发上的值.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读