.NET 网页模板的实现
现在好多网站都实现了在后台改模板的功能,今天我讲一下在开发中我用到的几种实现方法,和我对这几种实现的一些亲身体会。
一、将网页模板存放到数据库中。通常网站都是利用这种方法来实现的。这种方法是将HTML代码保存到数据库中,当用户访问页面的时候,程序从数据库中读取代码,然后直接输出。为了达到动态网页的效果,我们可以在HTML中加入自定义的“函数”,在程序的后台利用正则表达式查找出你定义的“函数”(也就是特定的一个字符串)和函数参数,然后根据这个“函数”的名字调用相应的.NET函数,用返回结果(执行的函数要返回HTML代码)替换模板中的“函数”,然后传送给终端用户。当然,为了避免频繁的调用数据库和提升网站的访问速度,我们利用这种方法来实现的模板须要将其存放到缓存当中。这种方法在实际应用的时候要写好多“函数”,比较麻烦。
二、不同的前台页面(.aspx)使用相同的后台程序(.cs文件)。在.NET2005中,当程序被发布以后,程序会自动将.cs文件转换成相应的程序集,我们添加模板的时候,只要将.aspx文件中必要的东西放入(复制)到一个新建的.aspx文件中,然后随意更改这个文件,保存后可以直接访问,这样程序就相当于多了一个页面,从而实现了自定义模板的功能。我们写程序的时候,用户在添加模板的时候只要添加一个.aspx文件就可以了,需要注意的是用户必须把原程序(原始.aspx文件)中引用的程序集复制到新模板中,最好是整个文件的内容复制,不同类别的模板有不同的程序集,引用出错就会发生错误。利用这种办法实现的模板,在模板中的asp.net控件仍然起作用,但是当管理员切换模板的时候,相应网页的实际URL会跟着发生改变。为了解决这个问题,我们可以改一下URLRewriter,让URL重写规则也跟着变,从而使URL保持不变。
三、通过XML+XSLT实现。我们都知道XML数据可以通过XSLT转换成网页的形式,那么我们在程序中的数据都存放/转换成XML,然后给不同的页面定义不同的XSL,来转换和显示网页。程序切换模板的时候,只要为页面切换一个XSL就可以了。缺点就是管理员懂得XSLT的很少,改起来可能不大容易。
一、将网页模板存放到数据库中。通常网站都是利用这种方法来实现的。这种方法是将HTML代码保存到数据库中,当用户访问页面的时候,程序从数据库中读取代码,然后直接输出。为了达到动态网页的效果,我们可以在HTML中加入自定义的“函数”,在程序的后台利用正则表达式查找出你定义的“函数”(也就是特定的一个字符串)和函数参数,然后根据这个“函数”的名字调用相应的.NET函数,用返回结果(执行的函数要返回HTML代码)替换模板中的“函数”,然后传送给终端用户。当然,为了避免频繁的调用数据库和提升网站的访问速度,我们利用这种方法来实现的模板须要将其存放到缓存当中。这种方法在实际应用的时候要写好多“函数”,比较麻烦。
二、不同的前台页面(.aspx)使用相同的后台程序(.cs文件)。在.NET2005中,当程序被发布以后,程序会自动将.cs文件转换成相应的程序集,我们添加模板的时候,只要将.aspx文件中必要的东西放入(复制)到一个新建的.aspx文件中,然后随意更改这个文件,保存后可以直接访问,这样程序就相当于多了一个页面,从而实现了自定义模板的功能。我们写程序的时候,用户在添加模板的时候只要添加一个.aspx文件就可以了,需要注意的是用户必须把原程序(原始.aspx文件)中引用的程序集复制到新模板中,最好是整个文件的内容复制,不同类别的模板有不同的程序集,引用出错就会发生错误。利用这种办法实现的模板,在模板中的asp.net控件仍然起作用,但是当管理员切换模板的时候,相应网页的实际URL会跟着发生改变。为了解决这个问题,我们可以改一下URLRewriter,让URL重写规则也跟着变,从而使URL保持不变。
三、通过XML+XSLT实现。我们都知道XML数据可以通过XSLT转换成网页的形式,那么我们在程序中的数据都存放/转换成XML,然后给不同的页面定义不同的XSL,来转换和显示网页。程序切换模板的时候,只要为页面切换一个XSL就可以了。缺点就是管理员懂得XSLT的很少,改起来可能不大容易。