Asp classic 经典ASP呈现模板并发送变量

Asp classic 经典ASP呈现模板并发送变量,asp-classic,Asp Classic,我有一个经典的ASP页面,我需要为表中的每一行创建一个循环,然后创建一个html文档并将其保存到硬盘上,但我想创建一个模板,这样我只需将两个变量发送到模板,这样我就不必每次都在循环中编写html文档 这就是我到目前为止所做的: SQL = "select Title, Article from [ASPTest].[dbo].[articles]" set rs = conn.execute(SQL) arrRecs = rs.GetRows For row = 0 To UBoun

我有一个经典的ASP页面,我需要为表中的每一行创建一个循环,然后创建一个html文档并将其保存到硬盘上,但我想创建一个模板,这样我只需将两个变量发送到模板,这样我就不必每次都在循环中编写html文档

这就是我到目前为止所做的:

SQL = "select Title, Article from [ASPTest].[dbo].[articles]"
  set rs = conn.execute(SQL)
  arrRecs = rs.GetRows
  For row = 0 To UBound(arrRecs, 2) 'Rows
      For col = 0 To UBound(arrRecs, 1) 'Columns
          Response.Write rs.Fields(col).Name & " = " & arrRecs(col, row) & " "
          dim fs,f
          set fs=Server.CreateObject("Scripting.FileSystemObject")
          set f=fs.CreateTextFile("C:\Users\User\Documents\ASP Pages\"+arrRecs(col, row)+".html",true)
          f.write("<html><body><div>It kinda works</div></body></html>")
          f.close
          set f=nothing
          set fs=nothing
      Next
      Response.Write "<br />"
  Next
SQL=“从[ASPTest].[dbo].[articles]中选择标题、文章”
设置rs=conn.execute(SQL)
arrRecs=rs.GetRows
对于行=0到UBound(arrRecs,2)'行
对于col=0到UBound(arrRecs,1)“列
响应。写入rs.Fields(col).Name&“=”&arrRecs(col,row)&”
模糊fs,f
设置fs=Server.CreateObject(“Scripting.FileSystemObject”)
设置f=fs.CreateTextFile(“C:\Users\User\Documents\ASP Pages\”+arrRecs(col,row)+“.html”,true)
f、 写(“它有点工作”)
f、 接近
设置f=无
设置fs=nothing
下一个
响应。写“
” 下一个
有没有一种方法可以使用一个有两个变量持有者的模板,将文章名称和标题发送到模板,然后将其保存到磁盘上


谢谢。

我认为您可以使用存储为文本文件的模板和
替换
功能来实现所需的功能

您的模板应该是一个完整格式的html页面,但标题和文章都有占位符值。占位符必须是唯一的,因此类似于
[[[~~~标题~~]]
或类似的序列不会出现在实际的标题、文章或模板本身中


[[~~~标题~~~]]
[[~~~标题~~~]]
[[~~~文章~~]]
在代码中,从文件中读取模板并将其存储在变量中。(因此,从技术上讲,您可以首先将其写入变量,但VBScript在字符串连接方面不好……无论如何。)获取标题和文章数组并循环遍历它(尽管只有一次:我不确定为什么在尝试中同时循环行和列)。对于每一行,制作模板的副本,用当前行的标题替换标题占位符,用当前行的文章替换文章占位符,并将结果写入文件

Dim模板,t
Dim fso,文件
Dim rs,康涅狄格州,SQL
暗记录,行
SQL=“从[ASPTest].[dbo].[articles]中选择ID、标题和文章”
“[…数据库内容…]
记录=rs.GetRows
“[…关闭数据库…”
设置fso=Server.CreateObject(“Scripting.FileSystemObject”)
设置file=fso.OpenTextFile(“path/to/template.txt”,1)”-1=用于读取
template=file.ReadAll
文件,关闭
Set file=Nothing
对于行=0到UBound(记录,2)
t=模板
t=替换(t,[[[~~~~~]]],记录(第1行))
t=替换(t,[[[~~~~~]]],记录(第2行))
Set file=fso.CreateTextFile(“path/to/html/”&记录(0行)&.html”)
文件写入(t)
文件,关闭
Set file=Nothing
下一个
设置fso=无

早在我创建KudzuASP模板引擎的那一天,它就解决了经典ASP中这个相当复杂的缺陷。在KudzuASP中,您可以拥有绝对没有HTML的ASP代码页

KudzuASP是一个小的include文件,大约不到1000行代码,可以将宿主ASP页面转换为模板引擎使用的事件驱动对象

简言之,您可以创建模板引擎的实例,设置一些变量,安装自定义代码对象,然后调用它,然后模板引擎读取模板,并在适当的时候和地点回调ASP页面。它有一个库系统,因此您可以通过代码或HTML模板中的标记加载自定义标记处理程序/组件库

最好的特性之一是,对于那些仍处于经典ASP保护伞下的应用程序,它使应用程序代码和逻辑与表示的100%分离成为可能。使用KudzuASP编写经典ASP页面比不使用KudzuASP容易得多,而且由于ASP编译页面的方式,回调是“本机的”,而且速度非常快


您可以在这里找到它,项目仍在维护中。

我不太明白您的要求是什么?你能进一步解释或提供一个结果的例子吗?我使用类似的技术用有意义的信息(如文本正文)替换电子邮件模板,而不必担心实际的html。非常适合标准化模板。这很有魅力!我只是想知道如何根据表的行Id命名html文档,例如100.html、101.html等等。感谢您的帮助:D@RiquelmyMelara:只需在SQL查询中包含行ID。等一下,我来编辑。比你好多了!这就是我要找的!!提供了使用
ADODB.Stream
而不是
Scripting.FileSystemObject
的方法。