基于DotNetNuke的动态窗体支持(一)
我在使用了DotNetNuke之后,对其中的UserDefinedTable模块比较感兴趣,并且认真的研究了 UserDefinedTable的数据结构和代码,认为这个模块的开发模式非常不错,于是,就基于这个模块,做了一些扩展的工作;和两年前基于 Joolma的一个FacileForms所做的工作有点类似,就是希望以列表式、灵活展示的方式,让用户可以去定义自己的数据结构,无论是列表、展示还是查询,都希望相对比较方便一些。其实,类似的模块,在DotNetNuke、Drupal、Joomla里面都有相若的例子,可见,对于CMS来说,这样的需求,是较为普遍的,一个更为“开放”的模块,对于用户来说,其实更容易接受和扩展。 这里我所讲的东西,其实和DotNetNuke关系好像并不是太大,其实,都是ASP.Net的东西。 对比一下UDT、FacileForms等模块,其实已经是相当不错了:支持较为丰富的数据类型、数据结构设计也非常合理,存储和查询做的也非常好——其实我现在对UDT的理解还是在3.3.7基础上的,后面升级了很多,但是都没有时间详细的去看。 不过,有一个问题就是,我觉得我们在日常生活中所使用的Forms,“零碎”更多,比如说,要增加什么颜色的 Title、什么Banner、什么字体等等,所以,我觉得UserDefinedTable本来已经做得很好了,但是在这些“零碎”上,基本上却没有什么扩展性,于是,在我开发的Form里面,我希望界面的定义可以更加灵活一些,比如说,完全由用户自己定义界面,美工使用DreamWeaver等工具去定义就可以了,而不需要和程序人员去沟通;只要在设计完成界面之后,在特定的地方,插入一些标识符(TAG),然后,模块就可以对这些标识符进行解析,并且插入相应的控件。如果可以这样做的话,我们就将所有的界面工作可以完全的丢给美工,让美工去处理就好了。 至于UDT和Joomla的FacileForms为什么没有这么做,我还不太理解;下面,我来说一下我这样做的思路。 1、ASP.Net已经支持动态加载用户控件,用户控件基本上是一个ascx的文件,对于美工来说,这个可以是一个html文件,只要在设计完成之后,修改一下扩展名就可以了。所以,对于Form来说,每一个动态的Form,对应一个唯一的ascx文件; 2、ASP.Net在加载完成ascx文件之后,可以读取ascx文件中的server标记,这就为加载完成之后,立即对服务器控件进行解析提供了方法,举一个例子,我们用下面的方法加载一个ascx控件:
上面的代码,我们已经用ASP.Net在运行时动态加载了一个用户控件,这个用户控件,可以由我们的美工人员进行定义(当然,在实际的代码中,strFormatFileName是动态产生的,可以根据当前的模块ID等进行动态绑定),当我们加载完了用户控件之后,马上用代码去遍历用户控件,找到我们定义的标识符,然后,再进行处理。代码如下: For Each c As Control In uc.Controls |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |