<form id="Form1" method="post" runat="server">
this is a Test.
</form>
在webform1.aspx.cs里:
public class WebForm1 : PageBase
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
pagetitle = "This is a Test";
}
}
至此,一个简单的page Template已经实现,运行看看,感觉怎样?J
二、 更多的Page Template应用
我们在做WEB应用时,经常发现WEB应用里的所有的页面都具备部分相同的表现或功能,例如Session处理、页面错误处理等。这些所有页面都相同的表现或功能,我们就可以通过Page Template技术解决,一来方便程序的整理及维护,二来减少代码量。下面列举了大部分WEB应用都具备的一些共性,这些共性可以通过Page Template技术轻松实现:
●Session处理
通常,我们需要记录用户的一些信息,如用户名、用户编号等,然后页面程序通过取得这些用户信息进一步判断用户是否已经登录、或进一步取得用户详细资料等。
[思路]:利用Page Template,只需要在所有页基类里定义一个是否已经登录的属性、或设置一个判断是否登录的保护方法,即可在每个页面自动判断用户是否已经登录,如果未登录立即跳转到登录页。
●国际化
对于一个需要多国语言显示的WEB应用时,需要在每个页面读取资源文件,以使页面以各种语言显示出来。
[思路]:根据获取到的用户客户端的使用语言,利用CultureInfo类进行操作。然后根据一个关键字key去获取在资源文件里的相应语言正文信息。
CultureInfo cultureObject = CultureInfo.CreateSpecificCulture(langCode);
Thread.CurrentThread.CurrentUICulture = cultureObject;
Thread.CurrentThread.CurrentCulture = cultureObject;
●错误处理
可以定义所有页面处理错误的方式的一致性——记录错误->跳转到错误页->以适当提示信息显示错误。
[思路]:利用Page Template,可以在页基类里定义一个ErrorCode属性,接着增加一个SetErrorCode(int code)方法实现设置ErrorCode属性和跳转到错误页面功能(SetErrorCode在后部代码的catch块里调用)。当跳转到错误页面时,错误页面将取得ErrorCode:
int errorCode = ((PageTemplate)Context.Handler).ErrorCode;
然后错误页面就可以根据errorCode从资源文件里取到相应的错误信息并显示出来。
●通用工具方法
所有页面都需要进行一些实用的方法,例如记录操作日志、发送信息操作等。
●帮助系统
当用户点击页面帮助按钮时,提供一致的帮助显示方式——打开帮助窗口->显示帮助->跳转到当前页所对应的帮助信息页。
[思路]:在页基类里定义HelpURL属性,然后在Render()里使用该属性。
●其他
诸如数据库操作、页面样式定制、甚至是所有页面都具有的按钮、图片样式或功能定制都可以使用Page Template实现。当然,具体还得根据具体情况应用。
三、 更多Page Template基类
通常,我们一个WEB应用都会由拥有不同模板基类的不同模块组成,例如论坛、后台管理、新闻发布、网上商店等。我们可以利用Page Template技术进一步整理为:
四、 什么时候应该使用Page Template?
最后,我希望大家都能明白,任何一样技术都不会在任何地方适用及使用的。因此,对于Page Template的适用范围为:在不止一个页面(一般是很多页面)的WEB应用里,每个页面都包含诸如headers、footers、menus、session等,甚至是诸如获取登录的用户信息等公用的方法时。
好了。如果需要更为详细的信息或需要下载示例代码,可以参考一下资料:
http://www.codeproject.com/aspnet/pagetemplates.asp
http://www.codeproject.com