今天大概的把Portal的源码看完了,感觉还是比较容易理解的。流程很清晰,代码也不难,可能是这个项目本来就不难的原因吧。(当然也是因为我并没有深入的原因)
在权限控制上,是这样实现的:
1. 在PortalCfg.xml配置文件里通过AccessRoles(针对Tab标签(首页导航中的链接)的权限)和EditRoles(具体Module的编辑权限)来设置。
2. 在Global.asax的Application_BeginRequest方法里获得PortalSettings(门户站点设置对象),并存储在HttpContext.Current.Items中(下面在判断是否具有模块的编辑权限时调用了)
3. 在页面中通过以下两种方法判断权限
PortalSecurity.IsInRoles("Admins")(amdin文件夹下的文件只用具有Admins权限就都可以访问)
PortalSecurity.HasEditPermissions(moduleId)(其他页面中判断是否具有编辑权限)
4. 根据上面的判断结果做出不同的响应。
另外具体的实现细节上,也有一些是我以前没见过的
1. 例如在列表框中选择指定项,通过点击上下按钮来实现排序的功能(在二十四画生的Blog 里有更多的说明
它这个里面的Order是以1,3,5…的形式标记的,然后上移就在原来的Order上减3,下移就加3,然后重新排列序号(还是形如1,3,5…),最后重新加载.
2. 这种用法没见过:
<asp:ImageButton ImageUrl=”/images/edit.gif” sourcePane=”contentPane” targetPane=”leftPane ” runat=”server” id=”contentLeftBtn” />
这里面sourcePane和targetPane两个标记肯定是自己加上去的,然后在程序里这样使用
在这个ImageButton的单击事件里
String sourcePane = ((ImageButton)sender).Arrtibutes[“sourcePane”];
呵呵~~~原来这些标记都是可以自己加的啊!!
我觉得Portal StarterKit最值得看的就是如何通过对xml文件的配制,动态的修改整个网站模块是否显示以及如何显示了...
ASP.NET Starter Kits中还有一个community(可能类似bbs)的项目,下个星期想先简单的看看,如果快的话,接下来我想看看DotText