Как можно получить число/длину элементов html с теми же именами классов из кода ASP.NET позади.Извлечение числа подобных HTML-элементов из кода в ASP.NET
ответ
IEnumerable<Control> FindRecursive(Control c, Func<Control,bool> predicate)
{
if(predicate(c))
yield return c;
foreach(var child in c.Controls)
{
if(predicate(c))
yield return c;
}
foreach(var child in c.Controls)
foreach(var match in FindRecursive(c, predicate))
yield return match;
}
// Используйте этот forloop получить контроль
foreach(WebControl c in FindRecursive(Page, c => (c is WebControl) &&
((WebControl)c).CssClass == "test"))
{
//Code
}
OP хочет проанализировать элементы html, а не серверные элементы управления (или, по крайней мере, не только). –
Вы можете получить только HTML элементы, помеченные как RUNAT = "сервер" со стороны сервера. Просто предложение: получите элементы html, которые имеют один и тот же класс с клиентской стороны с помощью селекторов jquery и передают их на сервер через ajax.
Неверный, вы можете найти элементы с FindControl –
Попытки переопределить метод визуализации:
protected override void Render(HtmlTextWriter writer)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
base.Render(htw);
string s = sb.ToString();
//here you are able to use HTMLAgilityPack to parse HTML
writer.Write(s);
}
Вы извлечете HTML как строка s и будет в состоянии разобрать его
Это трудно анализировать HTML, который визуализируется с помощью ASP.NET, так что зависит от таких факторов, как браузер клиента.
Однако, вы можете попробовать следующий подход, который использует control.RenderControl
для визуализации HTML и HtmlAgilityPack
проанализировать его:
protected void Page_PreRender(Object sender, EventArgs e)
{
string thisHtml = RenderControl(this.Form);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(thisHtml);
var nodeColl = doc.DocumentNode.SelectNodes("//*[contains(@class,'fooClass')]");
Console.WriteLine("Count: " + nodeColl.Count);
// here a linq approach with the same result:
var nodes = doc.DocumentNode.Descendants()
.Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value=="fooClass");
Console.WriteLine("Count: " + nodes.Count());
}
private string RenderControl(Control control)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter writer = new HtmlTextWriter(sw);
control.RenderControl(writer);
return sb.ToString();
}
Я использовал простую тестовую страницу с некоторыми некоторыми элементами управления, где некоторые из них имеют класс/CssClass = fooClass
. Результат оказался правильным.
- 1. Извлечение целого числа из числа
- 2. извлечение подобных терминов Solr
- 3. Извлечение числа из строки
- 4. извлечение прологового кода из кода
- 5. Извлечение из числа в списке из R
- 6. извлечение кода из cgal
- 7. Извлечение кода из строки
- 8. извлечение числа из строки в Баш скрипт
- 9. Извлечение кода из GitHub
- 10. Получение числа подобных в URL с помощью PHP за исключением числа подобных, полученных в разделе комментариев
- 11. извлечение числа из имен файлов
- 12. Извлечение indivdual цифр из числа.
- 13. извлечение числа из массива символов
- 14. Извлечение десятичных знаков из числа в Python
- 15. Извлечение числа из строки в Python
- 16. извлечение числа из строки в Oracle
- 17. извлечение десятичного числа из строки в Perl
- 18. извлечение числа из строки в Java
- 19. Извлечение числа недели из POSIXt в R
- 20. Извлечение числа из строки из 1 слова
- 21. извлечение кода javascript из html
- 22. PHP Извлечение кода из файла
- 23. Извлечение кода из исполняемого файла
- 24. Извлечение исходного кода из CCL?
- 25. Извлечение данных из HTML-кода
- 26. Извлечение кода C# из .exe
- 27. Извлечение кода из представления лучей?
- 28. извлечение статьи из кода json
- 29. Извлечение исходного кода из Heroku
- 30. Извлечение первого числа в поле
Количество/длина файла _which_html? Другой или тот, который вы собираетесь генерировать на этом жизненном цикле? Если первое, используйте HtmlAgilityPack, если последнее, я понятия не имею, поскольку не предсказуемо, что ASP.NET будет отображать в браузере клиента. –
Файл aspx, связанный или соответствующий файлу кода. – Sam