li与runat服务器

时间:2015-04-23 01:14:24

标签: c# html asp.net

我在创建动态< li>时遇到问题代码隐藏的元素。我需要将runat服务器分配给li,但我没有找到分配runat服务器的方法,所以当我需要从后面的代码更改属性时,我找不到那个li控件。我的问题有什么答案吗?我是asp.net c#的新手。

这是我的代码:

<ul class="nav nav-tabs" runat="server" id="tabList">
     //First i got ul control that i assign runat=server in aspx page
</ul>

//then i create li from code behind in Page_Init()
System.Web.UI.HtmlControls.HtmlGenericControl tab = new System.Web.UI.HtmlControls.HtmlGenericControl("li");
tab.ID = "tab" + (i + 1);
tab.Attributes.Add("runat", "server");//this is not working
tab.Controls.Add(new LiteralControl("<a href=\"#customer" + (i + 1) + "\" data-toggle=\"tab\">Penumpang " + (i + 1) + "</a>"));

//then i add the li to my ul controler called tablist
this.tabList.Controls.Add(tab);

我的问题是,当页面加载时,我可以在页面上看到li,但是当我需要对它执行某些操作时,我无法从后面的代码中调用li。有没有办法在代码后面调用li?或者动态分配时更改li属性?抱歉英语不好。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您无法访问代码隐藏中<li>的原因是因为它是动态生成的。

动态生成的控件在视图上呈现时会丢失其状态,并且当您发生回发时,您需要在代码隐藏中再次访问它们,您需要在使用它们之前重新创建它们。所以基本上,你需要在回发时每次重新创建它们以访问它们的属性和值并使用它们进行操作。

此外,runat='server'无法使用代码隐藏功能。您也可以尝试使用某些ASP.NET控件(如<li>或其他数据绑定控件),而不是使用Listview

希望这有帮助。