2009-09-02 55 views
0

我在用於創建電子郵件模板的網頁上有一個richtext文本框。此文本框將HTML作爲字符串返回。我需要從HTML中獲取所有圖像的來源,以便圖像可以存儲在數據庫中。一旦HTML返回,圖像已經被加載到服務器,並且新路徑已被用作圖像的來源。Page.ParseControl查找HTMLImage

我想解析控件,循環控制,如下所示,找到保存到數據庫的圖像並將源更改爲新值。

但是,當字符串被解析時,它總是返回一個文字控件,除非有一個runat服務器屬性分配給標籤。如果在服務器上運行,它將正確地將該控件標識爲HTMLImage控件。

有沒有辦法讓頁面解析所有的控件,而不管它們是否是服務器控件?

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 

回答

2

這聽起來好像你會使用類似的HTML Agility Pack解析從編輯器,而不是原始的HTML的更好。因爲它與純HTML一起工作,所以您無需擔心控件是否是服務器控件或HTML控件等。