HTML 模板 – 如何使用 C# 进行填充
本文介绍了如何基于模板创建 HTML 文档,并从数据源填充该文档。Aspose.HTML for .NET 提供了内联表达式语法,可用于模板和各种数据源类型(如 XML 和 JSON)。
模板标记
HTML 模板是一个普通的 HTML 文件,其中包含一些特殊的内联表达式,用于指定输入数据源与 HTML 页面标记的映射关系。这些内联表达式使用双曲括号符号。在模板处理过程中,模板标记将按照下述规则用相应的数据值替换。
内联表达式
以下是支持的内联表达式语法列表。
{{ …}}- 数据绑定表达式
数据绑定表达式*用于根据数据源中包含的信息设置控制元素的值。
数据绑定表达式的基本语法如下:
{{ 数据绑定表达式 }}
下面的演示展示了如何使用数据绑定表达式从 XML 数据源获取信息:
XML Data Source
1<Data>
2    <FirstName>John</FirstName>
3    <LastName>Doe</LastName>
4    <Address>
5        <City>Dallas</City>
6        <Street>Austin rd.</Street>
7        <Number>200</Number>
8    </Address>
9</Data>HTML 页面模板中的数据绑定表达式:
HTML 模板
这是一个使用内联表达式绑定数据的 HTML 模板示例。该模板包含一个表格,其中有 “Person” 和 “Address” 两列。“Person” 列中的单元格显示数据源中 {{FirstName}} 和 {{LastName}} 的值。“Address” 列中的单元格显示 {{Address.Street}} 和 {{Address.Number}} 的值。{{Address.Number}} 和 {{Address.City}} 的值。大括号语法用于表示内联表达式。
 1<table border=1>
 2    <tr>
 3        <th>Person</th>
 4        <th>Address</th>
 5    </tr>
 6    <tr>
 7        <td>{{FirstName}} {{LastName}}</td>
 8        <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
 9    </tr>
10</table>{{#foreach …}}- foreach指令表达式
foreach指令表达式与* 数据绑定表达式*相结合,用于遍历元素列表。
下面的演示展示了如何从 XML 数据源获取所有人员并填充模板:
XML Data Source
 1 <Data>
 2     <Persons>
 3         <Person>
 4             <FirstName>John</FirstName>
 5 			<LastName>Doe</LastName>
 6             <Address>
 7                 <Number>200</Number>
 8                 <Street>Austin rd.</Street>
 9                 <City>Dallas</City>
10             </Address>
11             <Phone1>345-345-34-55</Phone1>
12             <Phone2>345-555-09-09</Phone2>
13         </Person>
14         <Person>
15             <FirstName>Jack</FirstName>
16             <LastName>Fox</LastName>
17             <Address>
18                 <Number>25</Number>
19                 <Street>Broadway</Street>
20                 <City>New York</City>
21             </Address>
22             <Phone1>081-544-12-15</Phone1>
23         </Person>
24         <Person>
25             <FirstName>Sherlock</FirstName>
26             <LastName>Holmes</LastName>
27             <Address>
28                   <Number>65</Number>
29                   <Street>Baker str.</Street>
30                   <City>London</City>
31             </Address>
32             <Phone1>012-5344-334</Phone1>
33         </Person>
34     </Persons>
35 </Data>HTML 页面模板中的 foreach 指令表达式:
HTML 模板
data_merge 属性指定数据源为对象列表,列表中的每个对象都应重复填写表格。模板内的表达式(如 {{FirstName}}、{{LastName}}、{{Address.Street}} 和 {{Address.Number}})表示数据源中应插入表格相应单元格的字段。
 1 <table border=1 data_merge='{{#foreach Persons.Person}}'>
 2     <tr>
 3         <th>Person</th>
 4         <th>Address</th>
 5     </tr>
 6     <tr>
 7         <td>{{FirstName}} {{LastName}}</td>
 8         <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
 9     </tr>
10 </table>请注意,目前的实现只支持以下 HTML 元素的 foreach 指令表达式:DIV、OL、UL 和 TABLE。
数据来源
如前所述,数据源可以 XML 和 JSON 格式表示。以下是为本文准备的这两种数据源的示例:
XML Data Source
1 <Data>
2     <FirstName>John</FirstName>\
3     <LastName>Doe</LastName>\
4     <Address>\
5         <City>Dallas</City>\
6         <Street>Austin rd.</Street>\
7         <Number>200</Number>\
8     </Address>
9 </Data>JSON Data Source
1{
2     "FirstName": "John",
3     "LastName": "Doe",
4     "Address": {
5         "City": "Dallas",
6         "Street": "Austin rd.",
7         "Number": "200"
8     }
9 }用几行代码将模板转换为 HTML
准备好 HTML 模板后,只需几行代码即可在 C# 应用程序中将模板转换为 HTML!为此,您需要向
ConvertTemplate() 方法 (sourcePath、data、options、outputPath) 传递所需的参数。
1// Convert Template to HTML using C#
2
3// Convert template to HTML
4Converter.ConvertTemplate(
5    Path.Combine(DataDir, "template.html"),
6    new TemplateData(Path.Combine(DataDir, "data-source.json")),
7    new TemplateLoadOptions(),
8    Path.Combine(OutputDir, "template-with-single-line.html")
9);上面的代码片段展示了如何使用 ConvertTemplate() 方法根据模板创建 HTML 文档,并从 JSON 数据源填充数据。该方法需要四个参数:模板文件的路径、数据源、模板的加载选项以及保存输出 HTML 文档的路径。生成的文档将使用内联表达式语法,用数据源中的数据填充模板。
有关如何将模板转换为 HTML 的详细信息,请访问 将模板转换为 HTML。