在【CodeSmith快速入门之一:初次接触CodeSmith】中,我们实现了最简单的模板,但是模板中的内容无法由用户的输入决定。
假定你女朋友要你在新年的时候说10次“I LOVE YOU”,而在情节人那天要你说1000次“I LOVE YOU FOR EVER”,这可怎么办呢?
我们经过分析,其实就是次数和说的内容不确定。
那么我们马上着手开始实现吧。
1、新建C#模板,去掉原始内容并保存取名为“Love.cst”
(操作同【CodeSmith快速入门之一:初次接触CodeSmith】一致)
2、添加模板声明
3、为了可以接收外部传进来的“次数”和“内容”,定义两个输入参数
<%@ 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,我们可以像使用变量一样使用
public void Say()
{
for(int i=0; i<Count; i++)
{
Response.WriteLine(Content);
}
}
</script>
<script>脚本标签中可以包含一段代码,但是它们不直接影响输出的模板,我们可以在里面存放一些常用的方法
5、在模板中调用方法
<%@ 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
呵呵,怎么样,效果出来了吧。下次我将会为大家讲解对数据库中信息的访问,谢谢!