为html标记启用ViewState

本文关键字:启用 ViewState html | 更新日期: 2023-09-27 18:24:31

我是个新手,我想问个问题。请参阅html和codebehind。

HTML

<ul id="menu" runat="server" EnableViewState="True"></ul>

CodeBehind

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                var liItem = new HtmlGenericControl("li");
                var aItem = new HtmlGenericControl("a");
                liItem.Attributes.Add("class", "test");
                aItem.Attributes.Add("href", "#");
                aItem.InnerText = "please work";
                liItem.Controls.Add(aItem);
                menu.Controls.Add(liItem);
            }
        }

一旦回发,UL数据就会丢失,尽管我已经启用了视图状态。我记得上次它有效,但现在不行了。有人能提供建议吗?非常感谢

为html标记启用ViewState

发生这种情况是因为您通过第一次加载(!IsPostback)动态添加数据,然后(当Page_Load再次运行时)数据将丢失。您必须记住,EnableViewState是ASP.NET特定的属性,因此它只适用于继承自System.Web.UI.Control 的服务器控件

实现这一点的唯一方法是在每次加载页面时创建html标签(即删除!IsPostBack检查)

或者向支持ViewState的页面添加ASP.NET控件(Gridview、ListView、Label、Button等)。