CodeSmith模板
重复性的工作交给代码生成器就好,这里分享几套模板,
1.从数据库抓取字段,生成Table元素,这个在web开发中很有用
<%--
Name:
Author:
Description:
--%>
<%@ Template Language="C#" TargetLanguage="Text" %> <%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema"
Category="Context"
Description="Table that the stored procedures should be based on." %>
<%@ Property Name="SortColsNum" Type="System.Int32" Default="" Optional="True" Category="Int" Description="每行显示栏数" %> <form id="f_edit">
<table cellpadding="" cellspacing="" style="width: 100%; text-align: left; table-layout: fixed; border: 1px solid #BABABA; padding: 8px 4px 4px 4px;margin-bottom:4px ">
<% int i=;%>
<% foreach (ColumnSchema column in this.SourceTable.Columns)
{ %>
<% i++; %>
<% if (i%SortColsNum== || SortColsNum==)
{ %>
<tr>
<% } %>
<td class="myothertdnm"><%=GetName(GetColumnName( column.Name)).ToUpper()%>:</td>
<% if (i%SortColsNum==)
{ %>
<td class="myothertdlast"><input type="text" name="<%=GetName(GetColumnName( column.Name))%>" class="easyui-validatebox" required="true" validtype="length[1,5]" style="width:96%;" /></td>
<% } %>
<% else
{ %>
<td class="myothertdnm"><input type="text" name="<%=GetName(GetColumnName( column.Name))%>" class="easyui-validatebox" required="true" validtype="length[1,5]" style="width:96%;" /></td>
<% } %>
<% if (i%SortColsNum==)
{ %>
</tr>
<% } %>
<% } %> <% if ((i%SortColsNum!= && i%SortColsNum!=)||(SortColsNum<i&&SortColsNum!=))
{ %>
</tr>
<% } %>
</table>
</form> <script runat="template">
public string GetClassName(string name)
{
string returnName=""; if(name.Length >)
{
string[] names = name.Split('_');
foreach(string item in names)
{ returnName+= GetFunctionStr(item);
}
returnName ="Ent"+returnName;
} return returnName;
}
public string GetColumnName(string name)
{
string returnName=""; if(name.Length >)
{
string[] names = name.Split('_');
foreach(string item in names)
{ returnName+= GetFunctionStr(item);
}
}
return returnName;
} public string GetFunctionStr(string name)
{
string nameLower;
if(name.Length >)
{
nameLower = name.ToLower();
return nameLower.Substring(,).ToUpper()+nameLower.Substring();
}
return "";
} public string GetType(SchemaExplorer.ViewColumnSchema field)
{
string nativeType = field.NativeType.ToLower();
string result = "no:"+nativeType; switch(nativeType)
{
case "nvarchar2": result ="string";break;
case "varchar2": result ="string";break;
case "char": result ="string";break;
case "number": result ="decimal?";break;
case "long": result ="double";break;
case "date": result ="System.DateTime?";break;
} switch(field.DataType)
{
case DbType.AnsiString:result= "string" ;break;
case DbType.AnsiStringFixedLength:result= "string" ;break;
case DbType.Boolean:result= "bool" ;break;
case DbType.Date:result= "DateTime?" ;break;
case DbType.Double:result="double?" ;break;
case DbType.Decimal:result="decimal?" ;break;
case DbType.DateTime:result= "DateTime?" ;break;
case DbType.Int32:result= "int?" ;break; } return result;
} public string GetName(string name)
{
return name;
}
</script>
从数据库Table生成html
CodeSmith可以去网上下载,pj版的比较多,涉及版权,我就不放了,
基本上重复性的工作都可以交给它
CodeSmith模板的更多相关文章
- CodeSmith模板代码生成实战详解
前言 公司项目是基于soa面向服务的架构思想开发的,项目分解众多子项目是必然的.然而子项目的架子结构种类也过多的话,就会对后期的开发维护产生一锅粥的感觉.为了尽可能的在结构层避免出现这种混乱的现象,我 ...
- 软件代码生成之Codesmith模板.netTiers
.netTiers模板到2006年就诞生了, 到今天最后一次更新是12/17/2013, 支持.NET 4.5 and Visual Studio 2012 and 2013. n ...
- CodeSmith模板生成
转:http://blog.csdn.net/jason_ldh/article/details/9887073 一. 工具设置 CodeSmith默认是不支持中文的,那么我们必 ...
- CSLA框架的codesmith模板改造
一直有关注CSLA框架,最近闲来无事,折腾了下,在最新的r3054版本基础上修改了一些东西,以备自己用,有兴趣的园友可以下载共同研究 1.添加了默认的授权规则 如果是列表对象则生成列表权限,User的 ...
- dapper的增、删、查改的CodeSmith模板
<%@ Template Language="C#" TargetLanguage="Text" %> <%@ Property Name=& ...
- 在Windows7 下调试CodeSmith 注意事项
编写CodeSmith模板和编写程序一样,也需要进行调试,CodeSmith支持使用CLR’s Just-in-Time debugger调试模板. 要调试模板,首先要在CodeTemplate声明中 ...
- 利用CodeSmith生成抽象工厂步骤
其实CodeSmith挺好的,帮我们主动生成不少代码,并且代码质量不错,下面就来介绍一下利用CodeSmith生成抽象工厂步骤 打开codesmith模板的buildall 注意path的设置,因为后 ...
- Dreamweaver中打开CodeSmith文件
电脑环境:Windows2008+Dreamweaver 8英文版本 问题描述:Dreamweaver中默认打开文档时不支持打开CodeSmith模板文件对应的.cst后缀名文件,截图如下: 解决步骤 ...
- 分享一套 CodeSmit 代码生成模板。
分享一套 CodeSmit 代码生成模板. 住博客园 5 年了,以前也发过一些博文,但都在 一天后 / 几周后 / 几年后 将它删了:因为感觉代码写得不好:不清晰或侵入太大,哪怕只有一句侵入. 可是最 ...
随机推荐
- Linux 命令行快捷键
说明 Ctrl – k: 先按住 Ctrl 键,然后再按 k 键: Alt – k: 先按住 Alt 键,然后再按 k 键: M – k:先单击 Esc 键,然后再按 k 键. 移动光标 Ctrl – ...
- 以策略为导向的VI设计
从美学角度评价一个标志(LOGO)不是最佳方法,标志设计不是为了参加选美.标识要求除了审美功能外还应包括很多元素. 要说标志,先从CIS(企业形象系统)开始入手,里面分成MI.VI和BI,分别指企业的 ...
- Python-Day3知识点——深浅拷贝、函数基本定义、内置函数
一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...
- tinyxml一个优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)
(目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/Instant_RaphaelJS_Start ...
- noConflict
var _avalon = window.avalon avalon.noConflict = function(deep) { if (deep && window.avalon = ...
- 关于ellipsis多行换行的方案
WebKit浏览器或移动端的页面在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面实现比较简单,可以直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit- ...
- listview的用法
带标题和内容的 private String[] mtitle={"姓名","年龄","生日",};private String[] mar ...
- spring data mongodb 配置遇到的几个问题
一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...
- 链表c++实现一
#include <iostream>using namespace std; typedef char nodeEntry; struct Node{ //数据成员 nodeEntry ...