2016-03-14 51 views
3

你好,我有一個ASP腳本,我需要編輯。其實我需要重新發送它發送的電子郵件,所以我需要從它編輯HTML。如何以更好的方式從ASP中編輯html?

的問題是HTML(從ASP文件),對每一行

HTML = HTML & =" 

(加上一些其他的變化)。我需要從ASP採取的HTML代碼,擺脫了年初html = html部分,編輯雙""並將其轉換爲一個單一的"(我需要做的是一個接一個,因爲變量也有他們的報價)

比,我restyle頁面的HTML之後,我需要將其轉換回這樣我就可以在ASP (主要介紹了雙「「」再次和東西)

其整合是的,我可以編輯直接從ASP的HTML,但我不知道它如何看,因爲我不能運行該腳本(從服務器需要的其他文件,這是我沒有訪問)

問題:

有沒有更好的做法這個?

預覽我在ASP中直接做什麼的一些方法。或者,也許是一種工具,可以讓我從ASP HTML移動到HTML並更快地返回。

我確定知道我現在正在做的事很愚蠢,所以一定有更好的辦法。

回答

2

你可以創建一個有一些佔位符的HTML模板文件,讀取它,替換佔位符,然後在電子郵件中使用它。保存你不得不一直在使用變量來構建html。這previous answer有關於一個可能的解決方案的更多細節(使用代碼示例)。

+2

非常真實,這就是我在大多數情況下所做的。簡單,簡單,乾淨。 –

+1

@ShadowWizard一直以來都是這種方法的忠實粉絲,對於電子郵件模板也非常適用。 – Lankymart

2

作爲@steve-hollandmentions創建模板是避免代碼中所有煩人的HTML字符串的好方法,並且使佈局變得輕而易舉。

我以前一直在處理HTML模板腳本,通常我會構建一個Scripting.Dictionary,其中包含將在模板內部替換的鍵值對。

Function getHTMLTemplate(url, params) 
    Dim stream, keys, html, idx 

    Set stream = Server.CreateObject("ADODB.Stream") 
    With stream 
    .Type = adTypeText 
    .Charset = "utf-8" 
    Call .Open() 
    Call .LoadFromFile(url) 
    html = .ReadText(adReadAll) 
    Call .Close() 
    End With 
    Set stream = Nothing 

    keys = o_params.Keys 
    For idx = 0 To UBound(keys, 1) 
    html = Replace(html, keys(idx), params.Item(keys(idx))) 
    Next 
    Set keys = Nothing 
    Set params = Nothing 

    getHTMLTemplate = html 
End Function 

用法:

Dim params, html 
Set params = Server.CreateObject("Scripting.Dictionary") 
With params 
    .Add("[html_title]", "Title Here") 
    .Add("[html_logo]", "/images/logo.gif") 
    '... and so on 
End With 

html = getHTMLTemplate(Server.MapPath("/templates/main.htm"), params) 

Call Response.Write(html) 

main.htm結構:

<!doctype html> 
<html> 
    <head> 
    <title>[html_title]</title> 
    <link rel="stylesheet" type="text/css" href="/styles/main.css" /> 
    </head> 

    <body> 
    <div class="header"> 
     <img src="[html_logo]" alt="Company Name" /> 
    </div> 
    </body> 
</html> 

爲什麼使用ADODB.Stream代替Scripting.FileSystemObject;

  1. 您可以控制返回的Charset,甚至可以根據需要將其從一個轉換爲另一個。

  2. 如果模板特別大,您可以使用具有特定緩衝區大小的Read()方法流式傳輸內容,以提高讀取性能。

相關問題