日期:2014-05-18  浏览次数:20420 次

新来,散分200,请问大家重写Page类,大家一般作什么,我学了没有多久,请大家关照。^@^
我大上个月才学的ASP.net,以前会ASp,认了个老师。
他说重写Page类,以后好维护。可是我不知道,通常,重写Page基类,都作些什么,请有经验的高手都说说。谢谢了。最好给一些代码学习。谢谢

在线

是200分。

------解决方案--------------------
进行Session数据对象的转换
操作一些页面会出现的共同元素
进行页面级权限认证等等

一般都是企业级应用的时候需要做更多的事情
现在可能也会操作Profile
------解决方案--------------------
通用发放包括类似 输入字符处理,输出处理...
------解决方案--------------------
设置MasterPageFile
------解决方案--------------------
public class FriendsBase : System.Web.UI.Page //必须继承于Page类
{
protected string HeaderMessage = String.Empty;
protected string HeaderIconImageUrl = String.Empty;

FriendsFooter _footer;
FriendsHeader _header;
SubHeader _subheader;
//重写OnInit方法,将一些自定义控件及用户控件载入,并都放入0位置
protected override void OnInit(EventArgs e)
{
_header = (FriendsHeader) LoadControl
(Request.ApplicationPath + Path.AltDirectorySeparatorChar +
"Controls/FriendsHeader.ascx ");
_footer = (FriendsFooter) LoadControl
(Request.ApplicationPath + Path.AltDirectorySeparatorChar +
"Controls/FriendsFooter.ascx ");

_subheader = new SubHeader();

// Add to the Controls hierarchy to get proper
// event handling, on rendering we position them
Page.Controls.AddAt(0, _header);
Page.Controls.AddAt(0, _subheader);
Page.Controls.AddAt(0, _footer);
base.OnInit(e);
}
//重写Render方法
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
//移除页面类所包含的各个层次级别中的控件 Remove the controls from their current place in the hierarchy
Page.Controls.Remove(_header);
Page.Controls.Remove(_subheader);
Page.Controls.Remove(_footer);

Debug.Assert(
Page.Controls[1].ToString()== "System.Web.UI.HtmlControls.HtmlForm ",
"Form control not found ",
"Any FriendsReunion page requires that a Form control be " +
"located at index 1 of the Page.Controls collection ");


// 页面Page为索引号为1的控件Get a reference to the form control
HtmlForm form = (HtmlForm)Page.Controls[1];

//在页面上重新分配各种控件 Reposition the controls on the page
form.Controls.AddAt(0, _header );
form.Controls.AddAt(1, _subheader );
form.Controls.AddAt(form.Controls.Count, _footer );


//Set current values
_header.Message = HeaderMessage;
_header.IconImageUrl = HeaderIconImageUrl;
//调用基类的Render方法
base.Render(writer);
}
}

------解决方案--------------------
比如:你的某些页面,需要授权后才可以访问,你每个页面都判断Session就比较麻烦.这时你就可以继承Page类,在自己的类中重写Page_Load方法,来判断Session,这样你的其它页即不用从System.Web.Ui.Page来继承,而直接继承你自己的类就可以了.
还有比如:在做多语言的应用时,你可能要重写InitializeCulture 方法
------解决方案--------------------
高人来了不少,我再说几句

既然要重写Page基类就要,注意一下执行顺序以免出错

客户端访问都会有一个HttpApplication全程服务,

HttpApplication的确切执行顺序是:

BeginRequest ->