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

时间:2016-03-14 16:56:37

标签: html vbscript asp-classic

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

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

HTML = HTML & =" 

在其中(加上一些其他变化)。我需要从该ASP获取HTML代码,摆脱开始的html = html部分,编辑双""并将它们转换为单个" (我需要做一个接一个,因为变量中也有引号)

然后,我用HTML重新设置页面,然后我需要将其转换回来,这样我就可以将它集成到ASP 中(基本上会介绍双重'"'再次和东西)

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

问题:

有更好的方法吗?

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

我确定知道我现在所做的事情非常愚蠢,所以一定有更好的方法。

2 个答案:

答案 0 :(得分:2)

您可以创建一个包含一些占位符的html模板文件,将其读入,替换占位符,然后在您的电子邮件中使用它。保存您不得不继续搞乱使用变量构建html。这个previous answer有一些关于可能解决方案的更多细节(使用代码示例)。

答案 1 :(得分:2)

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