C# html标记的EnableViewState

C# html标记的EnableViewState,c#,jquery,html,css,asp.net,C#,Jquery,Html,Css,Asp.net,我是新来的,我想问一个问题。请查看html和代码隐藏 HTML <ul id="menu" runat="server" EnableViewState="True"></ul> 回发后,UL数据将丢失,尽管我已启用viewstate。我记得上次它能用,但现在不行了。有人能给我建议吗?非常感谢发生这种情况是因为您正在通过第一次加载动态添加数据(!IsPostback),然后(当Page\u load再次运行时)数据将丢失。您必须记住,EnableViewState是AS

我是新来的,我想问一个问题。请查看html和代码隐藏

HTML

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

回发后,UL数据将丢失,尽管我已启用viewstate。我记得上次它能用,但现在不行了。有人能给我建议吗?非常感谢

发生这种情况是因为您正在通过第一次加载动态添加数据(!
IsPostback
),然后(当
Page\u load
再次运行时)数据将丢失。您必须记住,
EnableViewState
是ASP.NET特有的属性,因此它只能在继承自
System.Web.UI.Control

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

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

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);
            }
        }