如何在asp.net RepeaterItem内访问<span>元素的属性?

Pat*_*rey 4 asp.net repeater

我正在尝试更改位于Asp.net内的跨度的CSS类RepeaterItem。该span元件还具有它(单选按钮)内的其他标签。

标记与此类似:

<asp:Repeater>
    <ItemTemplate>
        <span class="spanClass" runat="server">
            <label>
                <asp:RadioButton id="rbID">
                </asp:RadioButton>
            </label>
        </span>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令编辑单选按钮:

rb = (RadioButton)(repeaterItem.FindControl("rbID");
rb.Checked = true;
//this works
Run Code Online (Sandbox Code Playgroud)

但是,当使用类似的代码片段来抓取时span,它会失败,并显示,InnerHtml exception因为span不是文字控件:

span = (GenericHtmlControl)(repeaterItem.FindControl("spanID");
span.Attributes.Add("class", "ClassToAdd");
//this fails
Run Code Online (Sandbox Code Playgroud)

我读过的书说是这种情况,因为span并不是文字控件,因为其中有其他服务器控件(单选按钮)。

有没有办法访问相关属性<span>

Han*_*año 5

span像这样更改您的:

<span id="spanID" runat="server">
Run Code Online (Sandbox Code Playgroud)

然后在您的代码后面:

protected void myRep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {
        HtmlGenericControl x = (HtmlGenericControl)e.Item.FindControl("spanID");
        x.Attributes["class"] = "myClass";
    }

}
Run Code Online (Sandbox Code Playgroud)