2014-12-02 3 views
0

Мне интересно, могу ли я получить доступ к Html элементам в aspx из кода позади имени настраиваемого атрибута. КакЭлементы доступа по пользовательскому атрибуту

HtmlElement[] allElements = Page.FindElementByCustomName("custom-name"); 

и это даст мне массив всех элементов с этим атрибутом предположим, мой ASPX, как показано ниже

<a runat="server" custom-name = "any">Faf</a> 
<a runat="server">AB</a> 
<a runat="server" custom-name = "any">Amla</a> 

и allElements будет иметь два a элементов, т.е.

<a runat="server" custom-name = "any">Faf</a> 
<a runat="server" custom-name = "any">Amla</a> 

ли Возможно?

+1

вниз голосования не плохая вещь, но вниз голосование без комментариев звучит как вы побили ваша жена и вынимая разочарование на меня: P – Imad

ответ

2

Вы можете перебирать все элементы управления на странице, но это нужно сделать рекурсивно. Например, начните с Page.Controls, затем, для каждого элемента управления, итерации через свою коллекцию Controls. Для управления атрибутами необходимо реализовать IAttributeAccessor; вы можете проверить, реализует ли этот контроль в вашей итерации этот интерфейс. Это интерфейс, который требуется, когда вы должны вставлять пользовательские атрибуты в разметку. Например, WebControl реализует его. Если теперь, когда вы пытаетесь добавить настраиваемый атрибут, ASP.NET не сможет сказать, что нет свойства с этим именем. Что-то вроде:

public static void ListControls(ControlCollection controls, List<Control> controlsFound) 
{ 
    foreach (var control in controls.OfType<Control>()) 
    { 
     if (control is IAttributeAccessor) 
     { 
      controlsFound.Add(control); 
      ListControls(control.Controls, controlsFound); 
     } 
    } 
} 

Что вы должны позвонить со страницы:

var controlsFound = new List<Control>(); 
ListControls(this.Controls, controlsFound); 

В конце концов, просто перебирать controlsFound, который вы знаете, является сбор IAttributeAccessor и извлечения атрибутов имя-атрибута:

var attr = (control as IAttributeAccessor).GetAttribute("attribute-name"); 
+0

НайденыКонтроли и элементы управленияОбразны? – Imad

+1

Да, извините! Поправил его, спасибо. Дайте мне знать, если вам нужно разъяснение. –

+0

Что они, пожалуйста? Попробуй. –

Смежные вопросы