为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数据就会丢失,尽管我已经启用了视图状态。我记得上次它有效,但现在不行了。有人能提供建议吗?非常感谢
发生这种情况是因为您通过第一次加载(!IsPostback
)动态添加数据,然后(当Page_Load
再次运行时)数据将丢失。您必须记住,EnableViewState
是ASP.NET特定的属性,因此它只适用于继承自System.Web.UI.Control
的服务器控件
实现这一点的唯一方法是在每次加载页面时创建html标签(即删除!IsPostBack
检查)
或者向支持ViewState的页面添加ASP.NET控件(Gridview、ListView、Label、Button等)。