此篇文章是于下面链接的文章之后所写:
http://www.cnblogs.com/aspnetx/archive/2006/07/31/464124.html
主要是记录masterpage的转换思路,争取考虑到每一个地方。
希望在把自己的每一个过程分享出来的时候能帮助更多的人由asp转向到asp.net,也希望能和大家一起熟练asp.net的解决方法。
注:原网站:http://www.jlpopss.gov.cn
网站的转换工作首先定位到masterpage的转换。
在asp方案中,是用include file的方法把页的公共部分划分出来,上面存到title.asp中,左侧和下侧分别为left.asp和bottom.asp,然后用三个table上中下放置它们,当然中间的left.asp是两列,右侧是content部分。这样框架当初就这么设计出来了。
机遇asp.net2.0的新特性之一masterpage可以代替这个方法。基于这个方法把上,左和下的公共部分都做成UserControl,当然也可以不这么做,然后也是按照和asp一样的方法依次排开。总的来说模式是没什么太大的变化,但是,这样做比asp要省很多事,比如,在asp中哪个页用到了都要单独考一个框架的代码过去,但是在asp.net2.0中(asp.net1.1没有),可以让这样的页指向那个masterpage页,然后实现contentplace里面的东西就可以了。另外,在asp.net2.0中,是content里面的page先被实例化,然后才是masterpage,也就是说,同样是content里面的aspx的page_onload要先于masterpage里的page_onload。这个是以前在调试过程中发现的。
目前关于title部分来说,没什么太大的转换了,flash直接用原先的代码就行,搜索部分,用控件来做,那些规划的文字部分直接用<a>标签,转换成控件的意义不大,下面的导航栏,目前来看用image控件意义不大。
左侧主要有三个地方,一个是显示时间和访问数,因为访问数是申请的一个计数器,所以打算直接把这些代码封装到一个usercontrol里,下面是栏目的链接,因为不设计到到数据库里循环读取数据,所以直接用datalist做静态的column就可以了。下面投票的程序稍微有一点复杂,因为那是自己用asp写的一个投票系统,直接转换过来就可以了,参考一下原先代码里的逻辑。
最下面,存文本,直接封装到usercontrol里。
关于文件的命名:
Masterpage页:default.master
用户控件全部放在UC目录下,分别为
Title.aspx
Left.aspx
Bottom.aspx
Vote.aspx
左侧其余栏目不做封装,全部写到masterpage里。
另外,关于content里封装的想法:
首先,内容部分的文章标题显示部分,用UserControl会更好一些,并且封装的越少越好,理论上封装出一个然后根据不同的参数显示出不同的效果就可以了,但是,还是分成两个比较合理,具体描述如下:
今天观察网站突然发现一个规律,就是读数据的时候,用datalist,似乎有规律可寻。比如我做两个usercontrol,里面有几个共同的属性,分别为:
显示的行数:控制datalist显示多少行
宽度:datalist的宽度
这个都是一样的,为什么要分成两个,是因为我在观察网站的时候突然发现这么一个规律,就是象社科要闻和工作通知这两项,题目和日期是一个tr分成两个td来写的,所以这个控件就需要知道两个td的宽度,而在知道其中一个宽度的前提下,另外一个就可以根据datalist的总宽度算出来了。
题目宽度:datalist里题目的宽度
另外一个usercontrol不需要额外指定任何属性就可以完成。
这几天要好好的分析一下这个方案可行性。