изменить идентификатор серверного элемента управления в asp.net - PullRequest
2 голосов
/ 19 ноября 2009

Хай, ребята,

Я использовал find control, чтобы найти элемент списка в списке ненумеров внутри главной страницы со страницы содержимого, используя это,

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

Теперь мне нужно изменить идентификатор контрольного дома на «текущий», потому что для этого нужно применить css ....

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Знаете ли вы тип найденного элемента управления? Ни Control , ни ListItem не предоставляют свойство 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.

1 голос
/ 19 ноября 2009

Да, использование идентификаторов CSS в asp.net - большая проблема. Прежде всего, вы можете изменить идентификатор вашего серверного элемента управления на тот, который вам нужен, но он будет восстановлен ASP.NET в зависимости от положения элемента управления в дереве элементов управления вашей страницы.

Я рекомендую использовать свойство cssclass элементов управления и заменить идентификаторы css на класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...