首页 > 代码库 > 输入参数和方法

输入参数和方法

在【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

呵呵,怎么样,效果出来了吧。下次我将会为大家讲解对数据库中信息的访问,谢谢!