您的位置:首页 > 运维架构 > 网站架构

网站中专题设计时的考虑

2012-06-06 17:00 113 查看
一、项目需求描述

客户要求针对于某些活动、节日等大型事件时,以专题的方式进行报道、庆祝。

二、功能要求

系统需要预先定义一些“专题模板“,在后台管理中,可以让管理员自己选择任何一个”模板“以添加新的专题。

解释一下几个概念:

1、专题,类似于子网站,每个专题都会有很多页面,这些页面间可能会共享数据(从数据库取得)。

2、模块,因为专题的个数是不限的,但又不可能为每个专题都设计一套UI。所以就要由美工预先设计几套专题的UI,当发布一个新的专题时就可以选择其中的一套UI来指定其“风格”(或称主题)。

三、设计思路

注:项目使用ASP.NET MVC 2.0开发

以路由为入口点,为专题模块配置路由规则。

1、当用户请求页面时,根据配置规则,获取专题的相关数据(如:专题ID、请求的页面名称);

2、根据此ID到数据库(或配置文件)中找到该专题使用的“模板”(模块目录名);

3、读取用户请求页面需要的数据,并传递给请求的页面,最后返回给客户端。

四、详细设计

1、数据库设计


描述:

A、专题表

用于保存所有的专题列表。“路径段”保存匹配于路由中的“{path}”参数;专题名称保存所使用的专题模板。

B、专题数据

保存所有专题的内容数据,如:文章、附件(仅路径)等。字段“所属模块”类似于关键字,同一专题页面可能会读取多个“模板”,同一专题不同的页面也可能会读取相关的“模块”,简单的说就是把数据进行分组,然后在页面中以此组名来读取数据,以解决同一数据可能出现在多个地方的问题。

2、路由配置

context.MapRoute(

"SpecialSubject_match",

"SpecialSubject/{path}/{page}/{id}",

new { controller = "Template", action = "Match", id = UrlParameter.Optional }

);

3、模板的保存位置

同一个模板中的所有资料保存在一个文件夹中(专题表中的”模板名称“对应此文件夹名),所有的模板文件夹保存在同一父级中,以便查找。

4、控制器的处理

按路由配置的说明,所有的请求均由/SpecialSubject/Template/Match来处理,即区域为“SpecialSubject”、控制器为“Template”、动作为“Match”的方法。

此方法根据匹配的{path}到“专题”表中读取字段“模板名称”,再根据匹配的{page}到相应的模板中找到这个页面,最后返回给客户端即可。

5、视图如何读取数据

任何一专题模板,可以附带一个配置文件(下在考虑,完成后更新),此文件用于描述专题所使用的“模块”,每个模块并带有描述性的简介,以帮助管理员在添加数据时便于理解。

任何一个页面可能会有一个块(或称区域),也可能会有多个,这些块就是根据配置中的“模块”来读取数据的。比如:首页中分为3个部分,第一个部门是滚动图片,第二个部门是新闻,第三个部门是视频,则依次为它们配置三个“模块”名称:image、news、video。在管理员添加数据时,先选择一个专题模板,然后选择这条数据是哪个模块下的数据(由配置文件描述)。view读取数据时,就可以到“专题数据”表中读取此专题下的“模块”分别为image、news、video的数据即可。

6、可能遇到的问题

由于不再是配置的路由规则,当在模块页面中显示一个链接时可能会遇到问题。假设如下:

当前页面为:A,需要显示转到页面B,请求参数为id=3&name=abc的链接。此如可以这么写:

<%=Html.RouteLink("超链接", "SpecialSubject_match", new { page = "B", id = 3, name = "abc" })%>

如果转到模板为C的B页面,应该这样写:

<%=Html.RouteLink("超链接", "SpecialSubject_match", new { path = C, page = "B", id = 3, name = "abc" })%>

类似这样的问题都可以通用Html、Url助手来解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐