CodeSmith是强大的代码生成模版的创建工具,而Nettiers是基于微软企业库的代码生成模版,nettiers2.0能生成前台,中间逻辑层,实体层,后台存储过程,生成后的代码可以用vs2005直接打开并运行,包括增删改查排序分页等.
但美中不足的是生成的显示页面的HeaderText和编辑页面的标签时英文的,通过调整以下几个地方,你就可以将他们转换成中文的.
(1)在Sql Server你使用的数据库的表中将每一列的Description输入,必须输入每个列的Description否则显示时为空,也可以完善代码判断如果没有Description按列名处理。
(2)修改模版:EntityFields.ascx.cst
//
string propertyName = GetPropertyName(column);
string propertyName = column.Description;
string propertyName = column.Description;
将注释行改为下面行
修改模版:Entity.aspx.cst
//
fkPropertyName = GetPropertyName(fKeyColumn);
fkPropertyName = fKeyColumn.Description;
fkPropertyName = fKeyColumn.Description;
if
(column.NativeType
!=
"
text
"
&&
column.NativeType
!=
"
ntext
"
)
... {
//return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{0}" SortExpression="{2}" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"");
return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{4}" SortExpression="{2}" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"",column.Description);
}
else
... {
//return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{0}" SortExpression="" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"");
return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{4}" SortExpression="" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"",column.Description);
}
... {
//return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{0}" SortExpression="{2}" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"");
return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{4}" SortExpression="{2}" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"",column.Description);
}
else
... {
//return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{0}" SortExpression="" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"");
return string.Format("{1}<asp:BoundField DataField="{0}" HeaderText="{4}" SortExpression="" {3} />", propertyName, Tab(tabs), column.Name, (column.IsPrimaryKeyMember)?"ReadOnly":"",column.Description);
}
EntityFields.ascx.cst与Entity.ascx的CodeTemplate修改为如下:
<%
@ CodeTemplate Src
=
"
......TemplateLibCommonSqlCode.cs
"
Inherits
=
"
MoM.Templates.CommonSqlCode
"
Language
=
"
C#
"
TargetLanguage
=
"
C#
"
Description
=
"
Generates GridView using EntityDataSource Control.
"
Debug
=
"
True
"
ResponseEncoding
=
"
UTF-8
"
%>
注意与原来的不同,增加了ResponseEncoding="UTF-8",因为CodeSmith默认的编码格式为ASCII.
(3)编译,运行,OK,看看生成的代码是不是改变了,再运行以下看看。