【问题标题】:li with runat serverli 与 runat 服务器
【发布时间】:2015-04-23 13:01:37
【问题描述】:

我在从代码隐藏创建动态

  • 元素时遇到问题。我需要将runat server分配给li,但是我没有找到分配runat server的方法,所以当我需要从后面的代码中更改属性时,我找不到那个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属性?抱歉英语不好。

    提前致谢。

  • 【问题讨论】:

    • Attributes 集合用于 HTML 属性。 runat="server" 不是 HTML 属性。
    • 而不是使用html li,如果可以使用像listview或repeater这样的asp控件来生成?stackoverflow.com/questions/10578824/…
    • 实际上我只需要控制 html li 或访问它,因为我动态创建 li 来创建需要多少选项卡,然后如果它被选中,我会得到 dropdownlist 事件,选定的选项卡是 li 控件活动的(属性将被更改),我不知道如何使用列表视图或转发器来完成 li 工作@Se0ng11

    标签: c# html asp.net


    【解决方案1】:

    您无法在代码隐藏中访问&lt;li&gt; 的原因是因为它是动态生成的。

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

    另外,runat='server' 不能在代码隐藏中工作。除了使用&lt;li&gt;,您还可以尝试使用一些ASP.NET 控件,例如Listview 或其他数据绑定控件。

    希望这会有所帮助。

    【讨论】:

    • 只有我没有得到的 li 控件,我动态创建了文本框,我可以访问它,正如我在上面的评论中所说,我只需要访问 li 来更改属性,感谢@HarveySpecter 的建议
    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多