2009-09-02 6 views
0

J'ai une zone de texte richtext sur une page Web qui sera utilisée pour créer des modèles d'email. Cette zone de texte renvoie le code HTML en tant que chaîne. J'ai besoin d'obtenir la source de toutes les images du HTML afin que les images puissent être stockées dans la base de données. Une fois le HTML renvoyé, les images ont déjà été chargées sur le serveur et le nouveau chemin a été utilisé comme source de l'image.Page.ParseControl pour trouver HTMLImage

Je voudrais analyser les contrôles, faire défiler les contrôles comme indiqué ci-dessous, trouver les images sauvegardées dans la base de données et changer la source pour une nouvelle valeur. Cependant, lorsque la chaîne est analysée, elle renvoie toujours un contrôle littéral à moins qu'un attribut de serveur runat ne soit affecté à la balise. Si l'exécution sur le serveur est présente, il identifie correctement le contrôle en tant que contrôle HTMLImage.

Y at-il loin pour obtenir la page pour analyser tous les contrôles indépendamment du fait qu'ils sont des contrôles de serveur?

Dim s As String = "<P><IMG src=""http://localhost/MessageImages/14699666.jpg""></P>" 

Dim cnts As Control = Page.ParseControl(s) 

For Each c As Control In cnts.Controls 
    If TypeOf c Is System.Web.UI.HtmlControls.HtmlImage Then 
     Dim src As String = CType(c, HtmlImage).Src 
     'TODO: Save image to database 
     'TODO: Change source 
    End If 
Next 

Répondre

2

Il me semble que vous feriez mieux d'utiliser quelque chose comme le HTML Agility Pack pour analyser le code HTML brut de l'éditeur à la place. Comme il fonctionne avec le code HTML pur, vous n'avez pas besoin de vous soucier de savoir si les contrôles sont des contrôles serveur ou des contrôles HTML, etc.

Questions connexes