原文:http://www.mojoportal.com/overviewofcontentfeaturedevelopment.aspx
开发一个模块嵌入到mojoPortal系统中是很简单的,模块可以很简单,只包含一个模块控件(ContactForm.ascx模块就是一个简单的例子),也可以很复杂,需要另外的几个aspx页面来提供支持,比如论坛模块。
模块至少要包含一个(通常也是一个)从mojoPortal.Web.SiteModuleControl继承而来的模块控件。模块控件也是嵌入到mojoPortal内容管理系统的那部分,他使得你可以添加模块实例到页面中。
重要:当你开发的模块中(即. *.ascx文件内)使用了Postback 时,你需要在page load 或者init方法中显式的定义Page.EnableViewState=true; 因为默认设置是false ,以此来避免在不需要的时候使用Viewstate.
在mojoPortal中,菜单中的所有页面并没有实际对应一个aspx文件。实际上只有一个页面在处理所有的请求,这个页面就是Default.aspx.这个页面根据参数中的pageid来显示相应页面。所以网址的格式是Default.aspx?pageid=x ,x代表了数据库中对应的pageID.在系统中我们也使用了友好网址进行代替,所以你可能不会看到Default.aspx?pageid=x,而是看到比如home.aspx 或者forum.aspx这样的文件。
加载到页面中的控件是基于数据库中的数据来进行加载。对于更复杂的模块,比如论坛,模块也许会连接到相关的aspx页面,比如ForumView.aspx等。这些页面是实际存在的页面,你可以把 ModuleControl看成是一个模块的入口点,模块可能并不仅限于moduleControl内。所以模块可以有很多支持页面,所以可以建造很复杂的模块。moduleControl必须知道如何连接到相应的支持页面。
建造一个模块,你可以在vs中右键单击某个文件夹,然后选择“添加”—“新项”—“web user 控件” ,然后你需要修改这个文件,让其继承自mojoPortal.web.SiteModuleControl. (如果你的控件不需要被多个页面加载,也可以不用继承自SiteModuleControl) . 如果你的模块需要相关的支持文件,你需要使他们继承自mojoPortal.Web.mojoBasePage.
如果你要建立自己的模块,推荐的方法是,建立一个你自己的解决方案,这样当mojoPortal升级之后,你所做的工作不会白费。