Register  |  Login

杂项

对DNN及其相关本网站的一些琐碎事情。

推荐系列:Scheduler,Reset skin等(2008年第2期)

[1] DNN Scheduler Mechanism,翻译过来即为调度任务机制。
调度管理是DNN提供给开发者在一定的时间间隔实现调度任务的一种机制。利用你可以定制开发满足需求的调度任务,它也是在DNN典型模式(提供者模式)的基础上实现的,故可不更改核心代码就创建新的或修改原有的调度服务。关于如何使用DNN调度任务机制请查看我曾经在博客园的相关文章:
DNN调度管理解析(一)-----简单介绍及其API
DNN调度管理解析(二)-----自定义调度任务
DNN调度管理解析(三)-----如何运用DNN调度服务
相关链接:
How to Write a Custom DotNetNuke SchedulerClient (i.e. a Scheduled Task)
Programmatically Add, Delete, and Update Scheduled Tasks
[2] 重置皮肤
有时我们在配置皮肤时可能会出现一些莫名其妙的问题,比如找不到皮肤文件,或不小心删除皮肤文件夹可是还有某一页面仍然引用这一皮肤。这可能会使得DNN站点无法访问,当然修改管理皮肤也就无从谈起了.这时可通过以下类似URL重置皮肤,请注意参数SkinSrc之后的链接,我想你应该也猜到了,这就是DNN默认的皮肤dnn-blue!
http://localhost/dnnsun/Admin/Skins/tabid/49/Default.aspx?SkinSrc=[G]/skins/dnn-blue/Horizontal Menu - Fixed Width
[3] 如何创建一个符合XHTML标准的皮肤
应该承认DNN一直到现在的版本依然很难符合XHTML标准,但也无可否认它一直在往这个方向靠拢,不管是从模块开发还是皮肤设计都能看出这种努力的尝试。下边这篇文章就是列举了一些我们在设计符合XHTML标准的皮肤需要注意的原则或要点:
XHTML Skinning Uncovered
[4] 一种新的升级DNN的方式
说实在话,我也一直觉得DNN升级是一件很让人费心劳力的事情,需要考虑的东西太多,包括数据库的备份,SQL语句的执行,文件的备份等等,其中无法控制的就是web.config的修改,你需要明了其中配置的变化,不然你的站点也许无法正常运行,而可喜的就是自从DNN 4.6.2分布以来,DNN提供一些系列的方法让你可以在模块级别控制web.config的修改,包括增删改等操作,有兴趣者不妨看看这两篇文章,也许你从此找出答案来:
Core members feel the pain of upgrades too
XmlMerge - what is it?
[5] CodeSmith 开发模版下载
我只记得当初刚开始学习DNN的时候一直都在用CodeSmith 开发模版来生成代码,特别是在数据库表和业务逻辑层之间的代码生成的过程中特别有用,这可以节省很多的时间,后来才有了XX_StarterKit.vsi的出现,而现在由于DNN增加了IHydratable接口(关于IHydratable,不妨参看我之前的文章"王者归来—再谈CBO"),最初的CodeSmith 开发模版也许不再适用,这里提供最新的CodeSmith 开发模版下载,共享一下:
IHydratable CodeSmith
关于如何使用这一模块可参看这一文章:
Easily Create DAL for Your DNN Modules

读书杂感--开源与我

昨儿闲着无聊,看了看6月份的程序员杂志,发现有一个专题《开源在中国》, 主要介绍开源社区和开源软件在国内的一些发展历程,毋庸置疑,开源如今在国人的分量越来越重了。其间有些奇怪的是,似乎这些开源都是linux或java的专属权,我在所有文章中看不到任何关于Microsoft或衍生产品的开源的字眼,更别提我目前倾心的DNN框架了。不知这之间有啥不为人知的缘由,也许是Microsoft一直都在扮演霸主,“不开源”的典型代表吧,故此也就无从位列开源队伍了。:)
不管如何,至少我觉得有些文章写得还是不错的,我想开源精神都是一致的,DNN也是一种开源,尽管不为众人所知,故文章中提及的经验及其心得还是对我颇为裨益,故在此列举一些作为记录,也算是对自己倾心于DNN的鼓励和鞭策。同时在此有所呼吁,结交更多志同道合者(加盟dnnsun.com),希望DNN能够在国内真正的成为一个正规的开源社区,而不停留于本地化及其一些表面工作。
选择一个开源产品的标准:
1)目前的功能及其Roadmap
2)软件本身的架构
3)开发的活跃度及其社区的支持力度
4)该开源软件是否是遵守该领域的国际规范
5)与同类产品相比,可能存在移植的代价
我想补充的一点是: 6)可扩展性(这是DNN的优势)
开源之三重阶段(境界):
1)敞开心胸,拥抱开源( Open to Open Source)
2)深入开源,了解开源( Gig into Open Source)
3)融入开源,贡献开源( Get involved in Open Source )
对想做开源社区或参与开源项目的爱好者的三条建议:
1)要有激情,一定要热爱你做的项目。
2)要具备良好的语言能力,英语要达到一定的交流水平。(看来,这点并非独对DNN所特有, ^_^)
3)要真正理解开源运动的本质--共享精神,舍得把自己好的想法共享,放得下自己的名利,不能为了突出个人的贡献或个人在社区的地位就太突出自己。有些东西即使你能做,如果别人能做要尽量交给他人去做,这样才能形成一个团队,或者一种社区的精神--共享精神。(觉得这是DNN在中国最缺陷的)。
可从开源所获益的有:
1)阅读开源代码,有利于从理论到实践的平滑过渡。
评语:我想这像是对学生讲的,^_^ ,希望哪位读者如果还是在校学生的话,不妨在大学期间对代码实践有一定的重视。这不妨以我个人为例讲讲,本人对DNN的情缘也是从大学开始的,当时在一家公司实习,由于采用DNN作为底层框架,故而结识了DNN,而这一切来源于DNN当初很炫的“拖拽”功能。直至毕业前夕,论文的题目就毫不犹豫定位于DNN,尽管当初DNN资料相对缺陷,但是自己还是完美的搞定毕设,同时也有了dnnsun.com的诞生,而很让我觉得骄傲和自豪的是,答辩之间老师们看到我演示的站点竟然是一个在线站点,而且功能如此齐全,似乎有些“震撼”。
2) 阅读开源代码,与高手交流
评语: 的确,阅读高质量的代码,自己的代码风格,编程技巧和设计方法都在潜移默化得于提升,这在DNN模块开发中极为必要,因为核心代码或核心模块有很多地方可以借鉴。 这在我之前的文章曾累次提及到。
3)阅读开源代码,紧跟技术潮流。
使用开源的较高境界:(不大恰当的比喻:作者语)
开源项目多如牛毛,就像漫天的繁星,天空中有那么多美丽的星星,每一颗可能都是一个开源项目。我们在面对一个具体的需求,应该能像找到上帝的感觉,在信手挥洒之间,把这些星星组合成一个又一个不同的美丽星座。
评语: 有些赞同,具体到我个人,对开源该有些理想主义,特别是做一个非盈利的开源网站,就拿dnnsun.com来说,尽管我一直在撰写一些自己开发DNN的心得或文章,可却激不起多大的波澜,大家也没有什么交互的留言,这也许是国人的"习惯", 自不敢有所奢望。我更多还是一种自得其乐的心态,想做点事,踏踏实实做点事情,想到也许一些成果会对某个不知身在何处的DNN爱好者带来一些好处或帮助,我就心有所欣慰了。

推荐系列:一些感想及资源(2008年第1期 )

最近因为定制开发本站点的Blog模块,需要增加Skins(主题)功能,需要在页面加载时动态加载对应的样式文件,类似DNN默认的Skins加载机制,苦于没有合适的方法,后来Google了一把,觉得发现解决方案就在之前方便过的文章中"加速DNN的新举措",正所谓"踏破铁鞋无觅处,得来全不费功夫",资源就在眼前,何须苦苦寻找呢,所以我发觉有时工作之余有所心得如果能够记录下来,下次也许你碰到类似的问题能从此能到提示甚至现成的解决方案,因为有时人毕竟还是会健忘的,而这可以节省不少时间.故此有时在开发DNN过程,出现问题我就会想到我是否已经对类似问题有所记录,一般都会思索一番,然后在自己博客中看看,这的确帮助我不少,比如CommandButton的使用("再谈dnn的物尽所用(三)"), Skin docType的声明("解析DNN皮肤级别的doctype声明",URL用户控件的扩展("浅谈如何做到dnn物尽所用(二)")等等.希望大家也能从此能到一些提示或帮助.
按照惯例,今天在此还是分享一些资源:
1) Installing DotNetNuke 4.8.2 on localhost - Vista Home Premium and IIS7
作者详细讲述如何在Vista操作系统和IIS7下安装DNN4.8.2,列举了一些注意的步骤等等,图文并茂,也许对新入门的你有些帮助...
http://www.sunsethillsolutions.com/Resources/DotNetNuke/tabid/362/articleType/ArticleView/articleId/16/Default.aspx
2)Introduction to DotNetNuke Module Development
http://www.sunsethill.ca/Resources/DotNetNuke/tabid/362/articleType/ArticleView/articleId/17/Introduction-to-DotNetNuke-Module-Development.aspx
跟上一篇文章是同一个作者,同样图文并茂的讲述如何搭建DNN模块的开发环境及其创建"Hello,World"模块.
类似相关的文章你也可以在http://www.adefwebserver.com/DotNetNukeHELP/能找到比较详细的专题教程.
3)YAF论坛
自从IBuyPortal正式升级到DNN,YAF论坛就已经整合成为DNN模块,记得当时算是DNN框架下第一个开源的论坛,到目前为止,DNN相关的论坛比较有名就是ActiveForum, YAF-Forum, 还有就是DNN后来开发的核心论坛模块DNN-Forum.目前YAF论坛也升级到YAF-v1.9.1,可以在dnn4.5版本之上正常运行.有兴趣者不妨去官方网站看看:http://www.yetanotherforum.net/
4)DNN是微软国度的二等公民么?
对此DNN创始人Shaun Walker澄清了相关言论并对DNN的地位进行确认,关心DNN成长的你不妨看看:
Is DotNetNuke a second-class citizen?
http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryID/1831/Default.aspx
相关链接:
Who Uses DotNetNuke?
http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryID/1655/Default.aspx
你会发现DNN不再是在襁褓的婴儿,它是不容小觑的!
5)如何注释你的代码
   http://www.devtopics.com/13-tips-to-comment-your-code/
  这是一篇本人逛博客园看到的文章,作者列举了13个注释代码的原则或技巧,很有借鉴意义,记得<<代码大全>>也说到类似问题,万变不离其宗,个人觉得基本的原则是当你在构思你的代码时,不妨想想这些原则就好(当然不可能全都能顾及到), 这就是你对你的代码及其维护代码人员的一种负责态度了. 其中我最欣赏的是<10>,<11>,<12>. ^_^
  <1> Comment each level
  <2> Use paragraph comments
  <3> Align comments in consecutive lines
  <4> Don't insult the reader's intelligence
  <5> Be polite
  <6> Get to the point
  <7> Use a consistent style
  <8> Use special tags for internal use
  <9> Comment code while writing it
  <10> Write comments as if they were for you (in fact, they are)
  <11> Update comments when you update the code
  <12> The golden rule of comments: readable code
  <13> Share these tips with your colleagues

你在为寻找dnn资源而发愁么?

如题目所言, 你在为寻找dnn资源而发愁么?苦于搜索好些时候也没找到自己所遇到问题的合适解决方案, 其实对我个人所言, 如果你想查找dnn资源, 毕竟还是国外资源要比国内资源丰富得多, 时效性也好些,故此我推荐大家如果有点耐性的话不妨多看看国外的DNN资源, 我想这对你的dnn之旅会受益不少. 在此我推荐一个专门针对dnn资源搜索的网站, 你可以比较有针对性的获取到纯"DNN" 的第一手资源, 也许里边就有你想要的解决方案, 同时它也提供了一些有效获取dnn资源的途径:

你愿意共享DNN资源么,抑或你需要DNN资源?

在一个QQ群里,总是不断有新人进来,就好比dnn社区,也不断会有新手进来,这不可避免出现老是不断的问同一个问题的状况,在此我想创建一个专门共享资源的群区,大家可以在此分享自己的DNN资源,积少成多,我想最终我们大家都会受益匪浅的.这样就有DNNSUN讨论区(群号:60930597)的创建,哪位有兴趣者不妨加入,但有一个小小要求,希望你不是那种只顾索要资源的类型,而是真正的发扬资源共享精神的一分子. 当然因为DNN本源就是开源的,所有我们在此更多的是推广DNN的非商业运用及其资源收集.
如果你愿意分享的话,我会负责整理这些资源,让大家一起受益,也让后来者感激不已的.当然我们团队也会收集所有关于dnn的资源发布在这里(或我们的站点http://www.dnnsun.com)
目前我们的口号是:让我们一起努力,研究DNN的所有相关课题,希望给DNN在中国的广为人知贡献一点绵薄之力!
这一活动的伸延就是Best Web Gallary的诞生,在此你可以得到最新,最实时的,最前卫的DNN设计及其同行者的咨询,最优秀的DNN网站资源. 访问Best Web Gallary请点击:http://www.dnnsun.com/Home/ShowCase.aspx

DotNetNuke OpenForce '08 来了

DotNetNuke OpenForce Is Back,After a highly successful OpenForce '07 it is now time to begin planning for OpenForce '08.  We are currently working with our conference partners on the OpenForce '08 conferences.  One of our first tasks is to start identifying our speakers.
Are you a DotNetNuke expert?  Do you like to share your DotNetNuke knowledge with the community? Do you enjoy speaking in front of large crowds? You are exactly the person we are looking for.
Please visit the detail from here ( http://www.openforce08.com/Home/tabid/55/Default.aspx )

你的dnn站点慢了么?

当你的dnn站点在线运行了一段时间之后,你会发现速度在不断下降,加载页面很慢很慢,最后导致连自己都懒得访问了.这是为何呢?仔细寻找,你可能会发现数据库一直在膨胀,我想这就是站点变慢的罪魁祸首,在dnn中,如果你开启网站记录这一功能或某一任务调度,这些都会产生一堆的记录信息,久而久之就让你站点的数据库不断的膨胀. 你如果有条件或权限的话,你不妨到主机管理/SQL服务或在SQL Manage里执行以下语句看看你的数据库大小都消耗在哪了:  
sp_spaceused eventlog/sitelog/schedulehistory
 
我想到这你就应该很清楚我们下一步该怎么做,那就是把这些信息都清除了,减轻网站的页面加载压力. 当然,如果这些信息对你跟踪网站有用的话,那你只能继续你的”蜗牛之旅”了.下边列举两种方法可以清除这些记录.
1)  网站管理/查看日志网站记录等页面手动清除,这一方法的缺点就是你还是没法清除schedulehistory这一表里的数据.
2)  主机管理/SQL服务下执行以下SQL脚本:
 
  1. TRUNCATE TABLE {databaseOwner}[{objectQualifier}eventlog]   
  2. GO   
  3.   
  4. TRUNCATE TABLE {databaseOwner}[{objectQualifier}schedulehistory]   
  5. GO   
  6.   
  7. TRUNCATE TABLE {databaseOwner}[{objectQualifier}sitelog]   
  8. GO   
  9.   
  10. TRUNCATE TABLE {databaseOwner}[{objectQualifier}SearchItemWordPosition]   
  11. GO  
就我本地开发服务器上的dnn站点,原来备份数据有60M左右,清理之后我再备份就只有不大10M,我想这效果还是很显然的,所以不管是站点变慢了还是因为备份需要,我觉得我们都可以例时执行以上SQL脚本清理一下,这不失为一种策略.

如何定制DNN站点的网站管理和主机管理

申明一下,这一篇文章是参考http://www.dnnskin.cn站点上的某一贴子而写,就是对此有所总结。(大家有兴趣不妨去看看,挺不错的:)admin configure
在DNN使用中,我们可能有这样的需求,那就不想开放过多的权限给管理员以防止误删的事件,当然可能也有这样的需求, 增加某一个管理页面,对此的一般做法设置为管理员可见,这样就可以保证只有管理员才能查看和编辑这个页面,但是红色的边框提示确实比较难看,或许你需要把这个页面加入到admin或者host菜单,这样更方便管理和显得合理。在这里我们列举如何利用SQL Script来实现(当然也可能也有其他方法,但SQL应该是比较方便和直接的,前提你具有host帐号权限),接下来我们就分别对这两种情况讲解.
注意:以下更改之后必须重启IIS方才生效。
1) 屏蔽某些管理页面,也就是隐藏这些页面,最简捷的解决方案就是把类似以下的脚本拷贝到 主机管理/SQL服务下 当作脚本执行即可隐藏这些页面,不过缺点也是明显,如果你直接拷贝原来的Url仍然可以访问这一页面,实质就是我们只不过玩弄一下技巧吧了,当然你也可以设置IsDeleted或DisableLink这一属性,这就可以彻底的防止通过Url访问了。
UPDATE {databaseOwner}[{objectQualifier}Tabs]
        SET [IsVisible]='0' -- Apply to the admin tab to not show
        WHERE tabid=52
2) 增加管理页面并加入网站管理或主机管理菜单中。
首先我们新建一个页面,要记得查看页面id并记录下来 ,页面权限为正常即可,不必设置为管理员可见,然后添加管理模块到该页面,之后把类似以下的脚本拷贝到 主机管理/SQL服务下 当作脚本执行即可完成把管理页面改到管理菜单下
UPDATE {databaseOwner}[{objectQualifier}Tabs] 
        SET [TabOrder]='10032',
            [IsVisible]='1',
            [PortalID]=0, -- the filed related to which portal the admin menu exist 
            [ParentID]='38',
            [Level]='1',   -- the filed is the menu level, 0 is 1st, 1 apply to 2st...
            [TabPath]='//Admin//YourTabName', -- YourTabName is your tabName which you will insert into the admin menus
            [IconFile]='yourTabimage src' -- this filed is optional
        WHERE tabid=57
参数解析:
1) TabOrder: 站点管理菜单TabOrder值截止到10031,也就是说你可以用10032 10033 10034……
2) ParentID: ParentID的计算,站点ID为0时,ParentID为38,站点ID为1时,ParentID为56,站点ID为2时,ParentID为74,站点id加1,ParentID加18
portalid=0 ParentID=38
portalid=1 ParentID=56
portalid=2 ParentID=74
portalid=3 ParentID=92
……
这一方法待考证.
3) tabid: 你要加进管理菜单的页面的id
类似如果想要把管理菜单写入host菜单下,需要修改语句如下:
UPDATE {databaseOwner}[{objectQualifier}Tabs] 
    SET [TabOrder]='24',
        [IsVisible]='1',
        [PortalID]=null,
        [ParentID]='7',
        [Level]='1',   -- the filed is the menu level, 0 is 1st, 1 apply to 2st...
        [TabPath]='//Host//YourTabName', -- YourTabName is your tabName which you will insert into the admin menus
        [IconFile]='yourTabimage src'  -- this filed is optional
    WHERE tabid=57
参数解析:
1) TabOrder: TabOrder主机管理菜单TabOrder值截止23,你可以用24 25 26……
2) PortalID: 主机管理菜单PortalID值不变,因为主机管理是全局的,故PortalID默认为NULL
2) ParentID: 类似PortalID,因为主机管理是全局的,故ParentID一般为7
3) tabid: 你要加进管理菜单的页面的id
当然还可以在Admin或者是Host菜单下添加二级管理菜单,只需要加上TabPath='//Admin//一级//二级//…',

如何关联dnn脚本文件SqlDataProvider文件

在DNN中,模块开发的SQL脚本一般都是以.SqlDataProvider为后缀名,并且都带有模块的版本号,Higlight SQL 如此DNN在模块安装过程会自动识别模块现有的版本及其即将更新的版本并自动执行对应版本的SQL脚本,从而达到更新数据库的目的。然而苦恼的是在IDE中,比如Visual Studio(其中包括2003,2005,2008)都不能有效的显示SQL智能提示及其关键字高亮,平常择中的办法就是先把后缀名为.SqlDataProvider的SQL脚本文件修改为.sql,然后发布的时候在改回来,这样显得比较麻烦,其实我们可以修改一下注册表让Visual Studio支持.SqlDataProvider为后缀名的文件,其实很简单,就是需要你去注册表里边增加一注册项,
请按照下列步骤操作(Visual Studio 2008为例):
1. 单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定”。
2. 找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Languages\File Extensions\.sql 
3. 单击“文件”,然后单击“导出”。
4. 在“文件名”框中,键入用于保存包含原始注册表项的 .reg 文件的文件名,(比如sql)然后单击“保存”。
5. 用记事本或其他文本编辑器打开sql.reg,并把.sql更改为. SqlDataProvider,另存为SqlDataProvider.reg
6. 双击SqlDataProvider.reg导入注册表即可
接下来你打开某一个模块Project,你会发现凡是. SqlDataProvider后缀的脚本都可以关键字高亮,这就是你想要的。:)

如何定制安装dnn

如何定制安装dnn,如何修改dnn配置文件以达到我们需求,如何预安装admin菜单及其相关权限等等,我想这些都是部署dnn所必须考虑的问题,在此我还推荐一篇文章详细说明如何定制自己的dnn安装过程...

一些值得推荐的DNN资源

好久没写博客了,今天就此先推荐几篇文章算是自己的一些记录吧
1)  记得之前写过一篇如何定制自己的登陆或注册页面, 现在国外有一篇类似的文章,作者对此讲解得比较详细,如果需要深入了解的朋友,不妨去看看:
2) 记得之前有人问起如何更改FCK Editor默认的字体或样式, 你不妨看看这篇文章. 作者对此列举比较详细的步骤.
3) 在此强烈推荐这个工具类型模块, 它在开发及其测试环境下很用处, 也就是它允许你可以任意的切换用户,比如在你开发一个需要不同权限用户所对应的功能也不一样的模块来说,这是一个很简便的测试工具. 
4) 如何动态编程管理模块, 不妨看看这篇文章, 作者对此详细描述如何利用DNN框架已有的方法来管理页面上的模块, 最后总结如下:
A)使用DotNetNuke.Entities.Modules可获取到一些辅助类,在管理模块给与你很多现成的方法(比如增加,删除,复制当前模块等等)
B)类ModuleInfo主要包含在特定页面某一个模块所有相关信息.
C)类ModuleController主要包含一些操作模块的API函数, 比如比如增加,删除,复制当前模块等等
D)你可以调用类ModuleController里边的AddModule()直接生成你所需要的任何模块.
E)你可以调用类ModuleController里边的CopyModule()复制你所需要的任何模块.
F)你可以调用类ModuleController里边的DeleteTabModule()删除某一页面存在的模块.
G)你可以调用类ModuleController里边的DeleteAllModules()删除所有页面存在的模块.

开发DNN模块之Utility

列举一些可能我们在开发DNN模块中需要的Utility,比如获取文件的绝对路径等等,有时我们在开发模块的过程中,不妨多去DNN核心代码里边查看,也许你想实现的方法本来DNN已径实现了,那就没有必要自己再重写一遍了,毕竟我们的项目都是在DNN核心架构上开发的,尽量利用原有的代码总是最佳捷径,推荐大家去看看...

About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
网站主页
dnnsun
最新评论
  1. Re: "暴力"解决DNN无法登陆的问题

    你好 有个问题 我改了登录界面后能登录 但是一点注册 就跳到了HOME页 这个怎么解决

    --zl24622

  2. Re: 你的dnn站点慢了么?

    需要你把旁边的checkbox勾选上再执行 :)

    --Baldwin

  3. Re: 你的dnn站点慢了么?

    为什么,我将你的代码copy到host>sql中去执行之后,报错呢,语句是不是有问题哦?

    --claire

  4. Re: 剖析DNN架构-开篇之作

    很好

    --vling83

  5. Re: SunBlog更新:增加3D Tag Clouds插件

    在以上评论已说明, SunBlog已经是一个成熟的商业模块,如果需要授权或下载请邮件联系我们, 感谢你的关注, 我们即将推出一个demo的站点(这周之内).

    --Baldwin

  6. Re: SunBlog更新:增加3D Tag Clouds插件

    这个没地方下载的吗,要怎么才能下载到,谢谢

    --Sun key

  7. Re: SunBlog更新:增加3D Tag Clouds插件

    已经电邮您了,请注意查收

    --sunny0315

  8. Re: 如何添加DNN模块的自定义权限

    你只要设置好该节点即可, 比如:DnnSun.SunBlogNuke.Business.InterfaceController, DnnSun.Modules.SunBlogNuke 其他的请再详细看看本文,我觉得说得蛮清楚的 :)

    --Baldwin

Blog搜索
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
相册库
更多照片请查看相册库
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。