ASP.NET:以编程方式设置HTML元素的样式

ASP.NET:以编程方式设置HTML元素的样式,asp.net,repeater,htmlgenericcontrol,Asp.net,Repeater,Htmlgenericcontrol,我正在生成一个菜单,其中包含绑定到XmlDataSource的Repeater控件 <asp:Repeater ID="myRepeater" runat="server" DataSourceID="myDataSource" onitemdatabound="myRepeater_ItemDataBound" onitemcreated="myRepeater_ItemCreated"> <HeaderTemplate>

我正在生成一个菜单,其中包含绑定到XmlDataSource的Repeater控件

<asp:Repeater ID="myRepeater" runat="server" 
    DataSourceID="myDataSource" 
    onitemdatabound="myRepeater_ItemDataBound" 
    onitemcreated="myRepeater_ItemCreated">
    <HeaderTemplate>
        <ul class="menu_list">
    </HeaderTemplate>
    <ItemTemplate>
        <li id="liMenu" runat="server"><asp:HyperLink ID="hrefMenuItem" runat="server" Text='<%# XPath("@text")%>' NavigateUrl='<%# XPath("@href")%>'></asp:HyperLink></li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>
<asp:XmlDataSource runat="server" ID ="myDataSource" XPath="Menu/Items/*" EnableCaching="False" /> 

有没有办法做到这一点?

style属性是一个集合。这样做:

l_genericControl.Style.Add("css-name", "css-value")
或者,如果您正在使用CSS类,请更改CssClass属性:

l_genericControl.CssClass = "on-nav";
如果您试图使用javascript切换CSS类,请尝试以下操作(未经测试):

如果要使用javascript更改样式,这可能会起作用:

l_genericControl.Attributes.Add("onmouseover", "this.style.color='red'; this.style.backgroundColor='yellow';");
l_genericControl.Attributes.Add("onmouseout", "this.style.color='black'; this.style.backgroundColor='none';");

在基本层面上,您可以做到:

l_genericControl.Attributes["class"] = "on-nav";

这部分的问题在于:

l_genericControl.Style = "off-nav";
您可以通过应用CssClass来解决此问题

// += to prevent overwriting a class you would set in the markup
l_genericControl.CssClass += "off-nav";

我似乎无法访问CssClass属性。是否可以在项目模板(而不是li)中使用asp:listitem?如果项目符号列表在标题模板中启动,是否可以使用列表项目?我认为如果允许您添加它,它将起作用。但是,如果不嵌套在asp集合控件中,则可能不允许使用它。
l_genericControl.Style = "off-nav";
// += to prevent overwriting a class you would set in the markup
l_genericControl.CssClass += "off-nav";