在【CodeSmith快速入门之一:初次接触CodeSmith】中,我们实现了最简单的模板,但是模板中的内容无法由用户的输入决定。
假定你女朋友要你在新年的时候说10次“I LOVE YOU”,而在情节人那天要你说1000次“I LOVE YOU FOR EVER”,这可怎么办呢?
我们经过分析,其实就是次数和说的内容不确定。
那么我们马上着手开始实现吧。
1、新建C#模板,去掉原始内容并保存取名为“Love.cst”
(操作同【CodeSmith快速入门之一:初次接触CodeSmith】一致)
2、添加模板声明
<%
@ CodeTemplate Language
=
"
C#
" ResponseEncoding="UTF-8"
Description
=
"
爱情表达
"
%>
3、为了可以接收外部传进来的“次数”和“内容”,定义两个输入参数
<%
@ CodeTemplate Language
=
"
C#
" ResponseEncoding="UTF-8"
Description
=
"
爱情表达
"
%>
<%
@
Property
Name
=
"
Content
"
Type
=
"
String
"
Default
=
""
Optional
=
"
False
"
Category
=
"
Context
"
Description
=
"
要讲的话
"
%>
<%
@
Property
Name
=
"
Count
"
Type
=
"
Int32
"
Default
=
"
10
"
Optional
=
"
true
"
Category
=
"
Context
"
Description
=
"
讲的次数
"
%>
Property的属性:
--Name:名称
--Type:数据类型
--Category:属性分类名称
--Default:默认值
--Description:描述
--Optional:是否允许为空(true或者false)
注意:两个参数的名称分别为:Content和Count,我们可以像使用变量一样使用
4、为了重用,在模板中定义一个方法
<
script
runat
="template"
>
public
void
Say()
{
for
(
int
i
=
0
; i
<
Count; i
++
)
{
Response.WriteLine(Content);
}
}
</
script
>
<script>脚本标签中可以包含一段代码,但是它们不直接影响输出的模板,我们可以在里面存放一些常用的方法
5、在模板中调用方法
<%
@ CodeTemplate Language
=
"
C#
" ResponseEncoding="UTF-8"
Description
=
"
爱情表达
"
%>
<%
@
Property
Name
=
"
Content
"
Type
=
"
String
"
Default
=
""
Optional
=
"
False
"
Category
=
"
Context
"
Description
=
"
要讲的话
"
%>
<%
@
Property
Name
=
"
Count
"
Type
=
"
Int32
"
Default
=
"
10
"
Optional
=
"
true
"
Category
=
"
Context
"
Description
=
"
讲的次数
"
%>
您说的内容如下:
<%
Say(); // 调用Say方法
%>
<
script
runat
="template"
>
public
void
Say()
{
for
(
int
i
=
0
; i
<
Count; i
++
)
{
Response.WriteLine(Content);
}
}
</
script
>
代码标签:
<% 可以放置任意代码,但不能输出到模板 %>
<%= 输出内容 %>
6、运行模板,但是发现报出错误
Content is required:要讲的内容不能为空。原来我们把Content参数的Optional设置为了false,Content必须输入值。
9、在属性窗口中输入值【I LOVE YOU】并重新运行
注:Count中有默认值10,说明Default为10产生作用。
最后结果为:
您说的内容如下:
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
I LOVE YOU
呵呵,怎么样,效果出来了吧。下次我将会为大家讲解对数据库中信息的访问,谢谢!