2011-01-05 9 views
1

Я играю с элементом управления webbrowser и классом htmlElementcollection, чтобы получить все html внутри формы. Я заставил эту функцию зацикливаться на всем, и если метка найдена, она должна сохранить значение в атрибуте «И», а также в текстовом значении метки. то, когда элемент ввода найден, он должен проверить, содержит ли его имя текст, сохраненный в переменной ForID, если это так, добавить и показать.HtmlElement.GetAttribute ("for") Возвращает пустую строку

код:

private string logLabelInputs(HtmlElementCollection collection) { 
     StringBuilder sb = new StringBuilder(); 
     var forID = ""; 
     var labelValue = ""; 
     foreach (HtmlElement item in collection) { 
      if (item.TagName.ToLower() == "label") { 
       forID = item.GetAttribute("for"); 
       forID = forID == "" ? item.GetAttribute("FOR") : forID; 
       labelValue = item.InnerText; 
      } 
      if (item.TagName.ToLower() == "input") { 
       if(item.Name.Contains(forID)) { 
        sb.Append(labelValue + ": " + item.Name + "\r\n\r\n"); 
       } 
      } 
      if (item.All.Count > 0) { 
       sb.Append(logLabelInputs(item.All)); 
      }    
     } 
     return sb.ToString(); 
    } 

private void button4_Click(object sender, EventArgs e) { 
     HtmlElementCollection tagsCollection = webBrowser1.Document.GetElementsByTagName("form"); 
     textBox1.Text = logLabelInputs(tagsCollection); 
    } 

Так что happpens что forID всегда пусто. значение сохраняется правильно. Я проверяю прописные и строчные буквы (жестко я знаю, что это строчные буквы)

У вас есть идеи по этому вопросу?

ответ

0

будет лучше использовать любую инфраструктуру javascript, например jQuery, или Prototype. этот javascript будет кросс-браузером.

1

использовать это:

item.GetAttribute("htmlfor") 
Смежные вопросы