我有一个经典的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
有没有办法使用具有2个变量持有者的模板,并将文章名称和标题发送到模板,然后将其保存到磁盘?
谢谢。
答案 0 :(得分:4)
我认为你可以使用存储为文本文件的模板和Replace
函数来实现你想要的效果。
您的模板应该是一个完整格式的html页面,但标题和文章的占位符值。占位符必须是唯一的,所以类似于[[[~~~Title~~~]]]
或类似的序列,不会出现在您的实际标题,文章或模板本身中。
<html>
<head><title>[[[~~~Title~~~]]]</title></head>
<body>
<h1>[[[~~~Title~~~]]]</h1>
<div id="article">[[[~~~Article~~~]]]</div>
</body>
</html>
在您的代码中,从文件中读取模板并将其存储在变量中。 (所以从技术上讲,你可以把它首先写成一个变量,但是VBScript在字符串连接方面很糟糕......无论如何。获取你的标题数组&amp;文章并通过它循环(虽然只有一次:我不确定你为什么要在你的尝试中循环遍历行和列)。对于每一行,制作模板的副本,将标题占位符替换为当前行的标题,将文章占位符替换为当前行的文章,并将结果写入文件。
Dim template, t
Dim fso, file
Dim rs, conn, SQL
Dim records, row
SQL = "SELECT ID, Title, Article FROM [ASPTest].[dbo].[articles]"
'[...database stuff...]
records = rs.GetRows
'[...close database...]
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("path/to/template.txt",1) '- 1 = For reading
template = file.ReadAll
file.Close
Set file = Nothing
For row = 0 to UBound(records,2)
t = template
t = Replace(t,"[[[~~~Title~~~]]]",records(1,row))
t = Replace(t,"[[[~~~Article~~~]]]",records(2,row))
Set file = fso.CreateTextFile("path/to/html/" & records(0,row) & ".html")
file.Write(t)
file.Close
Set file = Nothing
Next
Set fso = Nothing
答案 1 :(得分:1)
当天我创建了KudzuASP模板引擎,以解决Classic ASP中相当复杂的缺陷。在KudzuASP中,您可以拥有绝对没有HTML的ASP代码页。
KudzuASP是一个小的包含文件,大约不到1000行代码,可以将您的托管ASP页面转换为模板引擎使用的事件驱动对象。
简而言之,您创建模板引擎的实例,设置一些变量,安装自定义代码对象,然后调用它,之后模板引擎会读取您的模板,并在适当的时间和地点对您的ASP页面进行回调。它有一个库系统,因此您可以通过代码或放置在HTML模板中的标签加载自定义标签处理程序/组件库。
最好的功能之一是,对于那些仍然在经典ASP保护伞下的人来说,它可以使应用程序代码和逻辑100%分离。使用KudzuASP编码经典ASP页面比没有编码更容易,并且由于ASP编译页面的方式,回调是“原生的”并且非常快。
您可以在KudzuASP找到项目仍在维护的位置。