CodeSmith 的 C# 语法与 Asp.net MVC2 的模板语法很像;对于 web 前端来讲其实也和 ejs 很像。
声明
编写模板代码第一句就是在声明:告诉 CodeSmith 你的开发模板的语言是 C#,生成的目标代码是 HTML,最后是这个模板的描述信息。
1
| <%@ Template Language="C#" TargetLanguage="HTML" Description="描述" %>
|
<% %>
C# 代码需要写在 <% %>
标签内
1 2 3 4
| <% string message = "hello world"; %> <% string name = "rocyuan"; %>
|
<%= %>
要输出到模板的变量值需要写在 <%= %>
标签内
1 2
| <%= message %> <%= name %>
|
需要写一大段 c# 代码时可以使用 <script></script>
标签,如需要封装函数功能等…。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <script runat="template"> public string SnakeFormatHump(string snakeName, bool isBig = false) { string newSnakeName = ""; string[] snakeNames = snakeName.Split("_".ToCharArray()); for(int i = 0; i < snakeNames.Length; i++) { string nameSplitFormat = snakeNames[i].Substring(0, 1).ToUpper() + snakeNames[i].Substring(1); if(isBig || i > 0) { snakeNames[i] = nameSplitFormat; } newSnakeName += snakeNames[i]; } return newSnakeName; } </script>
|
外部输出的变量(属性管理中管理的变量)
有些变量,我们需要在生成的时候通过属性管理面板输入的,这个时候就需要声明外部变量了
1
| <%@ Property Name="name" Type="System.String" Default="xxx项目" Optional="False" Category="分类1" Description="项目名称" %>
|
- Name:要声明的变量的名字
- Type:要声明的属性的类型
- Default:当没有通过属性面板输入值时,使用的默认值
- Optional:是否允许为空(即不输入)
- Category:声明的这个属性的类别(CodeSmith 软件中的属性面板中显示的类别名称)
- Description:说明描述
#include 引入其他模板文件
有些模板文件是专门存放工程中的公共工具方法的,这时在其他模板文件中就可以使用 #include
来引入工具方法模板,使用公共定义的方法了
1
| <!-- #include file="common\\utils.cst" -->
|
Assembly 添加程序集
使用类库所在的程序集时,需要在模板顶部添加所依赖的程序集引用
1 2
| <%@ Assembly Name="SchemaExplorer" %> <%@ Assembly Name="System.Net.Http" %>
|
Import 导入命名空间
使用一些 .Net
类库,或者 CodeSmith
提供的类库时,需要在模板顶部导入该类库的命名空间,比如:
使用 IO 操作时,需要导入 System.IO
命名空间
使用 JSON 数据处理时,需要导入 CodeSmith.Engine.Json.Linq
命名空间
1
| <%@ Import Namespace="System.IO" %>
|
注释
CodeSmith 中可以使用 <%– –%> 作为注释,也可以使用 c# 的注释(c#的注释必须在 c#语法标签中使用 <% %>
或 <script></script>
中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <%-- 注释注释注释注释注释 --%>
<% // c#注释 /* c#注释 */ // ... %>
<script> // c#注释 /* c#注释 */ // ... </script>
|