2

ハイみんな、

これを使用して、コンテンツページからマスターページ内のunorederリストのリストアイテムを検索するためにfindコントロールを使用しました。

Control home = this.Page.Master.FindControl("list").FindControl("home");

ここで、CSSを適用するため、コントロールホームのIDを「current」に変更する必要があります。

4

2 に答える 2

1

はい、asp.net で css id を使用することは大きな問題です。まず、サーバー コントロールの ID を必要な値に変更できますが、これは、ページのコントロール ツリー内のコントロールの位置に応じて、ASP.NET によって再生成されます。

コントロールの cssclass プロパティを使用し、css ID をクラスに置き換えることをお勧めします。

于 2009-11-19T12:13:56.003 に答える
1

見つけているコントロールのタイプを知っていますか? ControlListItemもCssClass プロパティを公開しませんが、ListItem はその Attributes プロパティを公開します。

コメントおよびその他の質問に基づいて更新します。

あなたが使用している必要がありますSystem.Web.UI.HtmlControls.HtmlGenericControl

したがって、次のようなものがうまくいくはずです:

HtmlGenericControl home = 
                    this.Page.Master.FindControl("list").FindControl("home")
                                                         as HtmlGenericControl;

string cssToApply = "active_navigation";

if (null != home) {
  home.Attributes.Add("class", cssToApply);
}

追加する必要があるクラスが既に割り当てられている可能性があると思われる場合は、次のようにすることができます。

if (null != home) {
  if (home.Attributes.ContainsKey("class")) {
    if (!home.Attributes["class"].Contains(cssToApply)){
      // If there's already a class attribute, and it doesn't already
      // contain the class we want to add:
      home.Attributes["class"] += " " + cssToApply;
    }
  }
  else {
    // Just add the new class
    home.Attributes.Add("class", cssToApply);
  }
}

それらが ListItems でない場合は、正しい型にキャストし、その型の CssClass プロパティがない限り、以前のように属性コレクションを変更します。

于 2009-11-19T13:47:35.047 に答える