2015-04-23 56 views
1

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

这里是我的代码:

<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属性?对不起,英文不好。

在此先感谢。

+0

“属性”集合用于HTML属性。 'runat =“server”'不是HTML属性。 –

+3

而不是使用html li,如果那可以使用像控制列表视图或中继器来生成?http://stackoverflow.com/questions/10578824/how-to-generate-unordered-list-dynamically-in-asp-net – Se0ng11

+0

实际上我只需要控制html li或者访问它,因为我动态地创建li以创建需要多少标签,然后如果选择了dropdownlist事件,那么选择的是li控件的选项卡将被激活(属性将被更改),我不知道如何使用列表视图或中继器来做li工作@ Se0ng11 – Ian

回答

0

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

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

此外,runat='server'不会从代码隐藏工作。除了使用<li>之外,您还可以尝试使用一些ASP.NET控件,如Listview或其他数据绑定控件。

希望这会有所帮助。

+0

只有li控制我没有得到,我动态创建文本框,我可以访问它,正如我在上面评论中所说的,我只需要访问li来更改属性,感谢@HarveySpecter的建议 – Ian

相关问题