DNN模块开发系列文章(7)——用CodeSmith Templates进行编码

在利用CodeSmith Templates进行代码编写之前,我们应该先完成数据表的设计。因为CodeSmith Templates是根据数据表的字段来生成相应代码的。

首先根据《DNN模块开发系列文章(1)——分析设计》中对MyCompany_Article文章信息表的定义在SQL Server数据库中进行设计。记住要设计好主外键,特别是与Modules表的关联。

其次,我们还可以将程序所用到存储过程先编写好。在编写存储过程时,我们可以利用CodeSmith Templates中StoredProcedures.cst模版进行编写存储过程。不过它编写好的代码好像和我通常用的命名规则不一样,所以我利用它生成的部分代码,如变量定义部分。这个文章模块的功能比较简单,就是添加、编辑、删除、查看文章,并能列举出这个模块的全部文章。所以我们可以利用5个对应的存储过程来完成,它们是:

MyCompany_Article_Add  添加

MyCompany_Article_Update  编辑

MyCompany_Article_Delete  删除

MyCompany_Article_Get  获取一篇文章

MyCompany_Article_GetByModules 获取该模块的全部文章

大家可以试着先编写这些存储过程,在这个系列完成后我会给出全部代码。在编写时要注意所有的数据库对象前都需要加上“dbo.”,在存储过程和表的命名上,我们也应该遵循“公司名_模块名_功能名称”的原则,遵循良好的命名规则不但代码看起来可读性更高,而且在后期我们只制作数据库安装脚本时可以方便的利用查找替换的办法快速生成数据库安装脚本。

利用CodeSmith Templates进行编程,我们当然要利用到CodeSmith这个代码生成利器。你可以在这里 http://www.codesmithtools.com/ 获得它。使用CodeSmith Templates的过程和简单,首先我双击需要用到的模版。通常,我先从Info类入手,双击Vb BLL Info Class.cst模版。首先我们需要选中MultiSourceTable,挑选我们所建立的文章信息表MyCompany_Article,如下图:

1、点击MultiSourceTable属性弹出Table Picker选择窗口,选择表所在的数据库,选择表。如果没有数据库,可以点击添加。


2、添加数据库连接


3、输入ObjectQualifer(任意输,好像没用),点击Generate生成代码


4、将这段代码复制到ArticleInfo.vb文件中

利用Vb DataProvider.cst生成DataProvider.vb文件代码。在生成时我们设置IncludeList为false,不生成获取全部文章列表的方法。将生成好的代码复制到DataProvider.vb中的相应位置,替换代码中“MyCompany_”前缀。

我们再分别利用Vb BLL Controller Class.cst和Vb SqlDataProvider.cst生成ArticleController.vb和SqlDataProvider.vb中代码,方法和前一种相同。在生成SqlDataProvider代码时,我们还需要修改一下对应的存储过程名称,因为我们命名规则和他的不一样。

现在我们已经完成了大部分逻辑层和数据访问层代码,剩下就只有表示层的代码了。我们分别修改Article.ascx、ArticleEdit.ascx和Settings.ascx这三个控件,添加一些asp.net控件进去完成设计要求的功能。现在就和开发其它asp.net程序一样了,没有什么其它技巧和难点。只是在编写时注意参考一下DNN其它模块的代码,看看他们都是怎样的结构,DNN Project Templates也为我们添加了不少代码,我们填充完剩下的部分整个模块就算是完成了。

时间: 2024-09-17 03:50:56

DNN模块开发系列文章(7)——用CodeSmith Templates进行编码的相关文章

DNN模块开发系列文章(1)——分析设计

序 DNN做为一个优秀的门户网站框架,可以通过安装各种功能模块的方式扩充应用.正是通过这一优秀的功能,DNN框架可以实现:文章管理,图片管理,文档管理,论坛,博客,商店,调查,FAQ等等各种各样满足实际需求的模块.通过这个强大的框架支持,我们可以很容易的实现这些模块.比如:权限控制,多语言支持,多数据库支持,搜索,聚合,皮肤等功能,我都可以很容易的通过框架实现.如果是在平时,光是实现这些基础功能我们就需要花去大量的时间.现在有了DNN框架的支持,我们就可以集中精力投入到模块的业务逻辑和流程上,从

DNN模块开发系列文章(6)——DNN中的通用控件(下)

TextEditor: 开发系列文章(6)--DNN中的通用控件(下)-通用语言模块">简介: 富文本编辑器控件.功能就不用多说了吧,大家都经常用到的.DNN利用Providers模式可以很方便的集成多种富文本编辑器.据我所知就有:FreeTextBox,FCKEditor,WebHtmlEditor,CuteEditor.大家可以通过配置web.config就可以很容易的选择使用一种了,具体的配置方法在每一个富文本编辑器Providers中应该都有详细的说明. 位置:controls\T

DNN模块开发系列文章(2)——建立模块开发项目

建立模块开发项目 开发DNN模块可以通过两种开发环境来进行: 一.在整个DNN解决方案下建立模块开发项目. 优点:可以方便的引用DNN组件,参考其他模块的实现方式,可以随时通过"转到定义"的操作查看DNN中该方法的定义,调试起来也比较容易. 缺点:速度慢.打开项目和编译项目都要费大量时间. 二.用单独的方式建立模块解决方案. 优缺点正好和第一种相对,不过在实际开发中速度是关键,下面我就单独讲讲我在以单独方式建立模块开发解决方案中的一些心得. 建立单独的解决方案进行模块开发需要解决三个问

DNN模块开发系列文章(5)——DNN中的通用控件(上)

DNN中的通用控件主要在DotNetNuke.UI命名空间下,而与模块开发紧密相关的都在DotNetNuke.UI.UserControls中,它们是开发具有DNN风格模块不可缺少的元素. LabelControl 文章(5)--DNN中的通用控件(上)-通用语言模块"> 简介: 标签控件.这个应该是用的最多的一个控件了.主要起到在输入框前起提示作用,如果点击问号图标开可以给出详细的说明. 位置: controls\LabelControl.ascx 属性: ControlName:对应控

DNN模块开发系列文章(4)——与模块开发相关的类

DNN做为一个功能强大的网站框架,它提供了提供了很多有用的类来为开发模块提供方便,以下列出几个和模块开发紧密相关的类: PortalModuleBase 说明:模块基类.所有的模块都是通过该类继承而来.这个类定义了DNN模块所要用到的方法和属性. 命名空间:DotNetNuke.Entities.Modules 文件位置:Components\Modules\PortalModuleBase.vb 常用方法: EditUrl:根据模块定义的ControlKey获取访问相应控件的Url.我们要调用

DNN模块开发系列文章(3)——在DNN中添加模块定义

添加模块定义 完成了以上几篇文章介绍的工作后,我们就可以把模块添加到DNN中了.虽然现在这个模块还不能运行,但是先添加进去就可以一边开发一边看到它的效果了. 一.用host(主机管理员)的身份登陆,进入"Host --> Module Definitions",点击"Add New Module Definition"添加新的模块定义. 二.输入以下模块信息后点击"Update"保存新模块. Module Name(模块名称):MyComp

asp.net 在DNN模块开发中遇到的resx怪问题_实用技巧

在DNN模块开发中遇到的resx怪问题 最近在修改以前的一个CrossArticle模块,其中有一个Test.ascx文件中的resourkey始终只能显示直接给出的text值,而不能显示resx文件中的值. 而其他ascx文件皆能使用自己resx中的文本. 反复检查了N次,快疯了.用vs2008的 tools菜单下的生成resx也不能解决问题. 请朋友们能个提示,谢谢. 相关代码片断: <?xml:namespace prefix = asp />" resourcekey=&qu

Android通用框架设计与完整电商APP开发系列文章

作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [[导学视频](http://szv1.mukewang.com/59562937e520e5f24d8b45f6/H.mp4 )] [课程详细介绍] 以下是部分截图 介绍与自我介绍 作者:网名@傅猿猿 陕西 西安市 全栈工程师 能文能武(评论区留言有机会获取个人微信畅聊人生) 点兵软件CTO 联合创始人 擅长Android Linux P

[转贴]Castle 开发系列文章

注:今天遇到以前的一个同事,要求指定用Castle来开发,他没用过这个,线上问到我,其实我也没用过这东西,只能在园子里找到这篇文章,转贴在这里,以后有空的话,再去研究一下 原文: http://www.cnblogs.com/illele/archive/2008/06/20/1227076.html Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服