如何以更好的方式从ASP编辑html



您好,我有一个需要编辑的ASP脚本。 实际上,我需要重新设计它发送的电子邮件,因此我需要从中编辑HTML。

问题是 html(来自 asp 文件)在每一行上都有

HTML = HTML & =" 

在其中(加上一些其他更改)。我需要从该ASP中获取HTML代码,删除开头html = html部分,编辑双""并将它们转换为单个"(我需要逐个完成,因为变量中也有引号)。

然后,我用HTML重新设置了页面的样式,之后我需要将其转换回来,以便我可以将其集成到ASP中(基本上再次引入双"之类的)。

是的,我可以直接从 ASP 编辑 HTML,但我不知道它的外观,因为我无法运行脚本(它需要来自服务器的其他文件,我无法访问这些文件)。

问题:

有没有更好的方法

直接预览我在ASP中正在做的事情的某种方法。或者也许是一个工具,让我从ASP HTML移动到HTML并更快地返回。

我当然知道我现在做的事情很愚蠢,所以一定有更好的方法。

您可以创建一个包含一些占位符的 html 模板文件,读入它,替换占位符,然后在您的电子邮件中使用它。省去了您继续使用变量构建 html 的麻烦。前面的答案提供了有关可能的解决方案的更多详细信息(带有代码示例)。

正如

@steve-holland提到的那样,创建模板是避免代码中所有烦人的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() 方法流式传输内容,以提高读取性能。

最新更新