网站中专题设计时的考虑

来源:互联网 发布:生产线仿真软件 编辑:程序博客网 时间:2024/06/09 17:33
一、项目需求描述
    客户要求针对于某些活动、节日等大型事件时,以专题的方式进行报道、庆祝。

二、功能要求
    系统需要预先定义一些“专题模板“,在后台管理中,可以让管理员自己选择任何一个”模板“以添加新的专题。
     解释一下几个概念:
     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助手来解决。

原创粉丝点击