2011-01-05 16 views
1

Ich spiele mit dem Webbrowser-Steuerelement und der htmlElementcollection-Klasse, um alles HTML in einem Formular zu erhalten. Ich habe diese Funktion gemacht, um alles zu durchlaufen, und wenn ein Etikett gefunden wird, muss es den Wert im 'For' Attribut und den Textwert des Etiketts speichern. Wenn ein Eingabeelement gefunden wird, muss es prüfen, ob sein Name den Text enthält, der in der Variablen ForID gespeichert wurde, und wenn ja, anhängen und anzeigen.HtmlElement.GetAttribute ("für") Gibt eine leere Zeichenfolge zurück

Code:

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); 
    } 

Was happpens ist, dass forID immer leer ist. Der Wert wird korrekt gespeichert. Ich überprüfe für Groß- und Kleinbuchstaben (zäh ich weiß, es ist Kleinbuchstaben)

ANyone haben Sie irgendwelche Ideen dazu?

Antwort

0

wird es besser sein, irgendein Javascript-Framework wie jQuery oder Prototype dafür zu verwenden. Dieses Javascript wird Cross-Browser sein.

1

Verwendung dieses:

item.GetAttribute("htmlfor") 
Verwandte Themen