3

<li>のページには があります。それは持っていrunat="server"ます。liコード ビハインドでこれを直接参照できるようになりました。ただし、ページ上の他のコントロールと同様に、ID と一致する文字列値に基づいて検索する必要があります。

私が持っているループの一部として:

var li = Page.FindControl("li" + i);

最終的に のクラスを変更したいliliしかし、直接参照した場合と同じように、どの属性にもアクセスできないようです。ここで私は何を間違えましたか?liコード ビハインドからan の属性を修正する別の方法はありますか?

4

2 に答える 2

3

サーバー側で一般的な html 要素を使用しているため、サーバー上のHtmlGenericControlにアクセスするとのインスタンスが取得<li>されます。このHtmlGenericControlクラスは、ほとんどの .NET Web コントロールのようにClassまたはCssClassプロパティをサポートしていません。Attributesそれでも、コレクションを介してクラスを変更できます。

var li = (HtmlGenericControl) Page.FindControl("li" + i);
li.Attributes["class"] = "myCssClass";

Page.FindControl("li" + i)メソッドには、有効なコントロール IDが必要です。したがって、<li>要素の id も追加する必要があります。

<li runat="server" id="li1">...</li>

ただし、リピーターまたはリスト ビュー コントロール内に動的リストを作成している場合は、親コントロールによって ID のプレフィックスが付けられるため、うまくいかない場合があります。プログラムで<li>.

于 2013-11-04T14:12:01.933 に答える