• 输入参数和方法


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

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

  • 相关阅读:
    iOS AppIcon尺寸
    MBProgressHUD的基本使用
    所有界面锁定屏幕方向,某一个界面支持屏幕旋转~
    90. 64位整数乘法【快速乘模板】
    89. a^b【快速幂模板】
    237. 程序自动分析 【map+并查集】
    旅行商问题【山财新生赛E】
    HDU 2647 Reward 【拓扑排序反向建图+队列】
    HDU1285 确定比赛问题【拓扑排序+优先队列】
    日志统计 尺取法【蓝桥杯2018 C/C++ B组】
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/3719871.html
Copyright © 2020-2023  润新知