■■■使用c#.net的时候新生成的web页面的base.OnInit(e)为什么都在InitializeComponent()之后呢?? 到Visual Studio的安装目录下找cs文件,其中有一些文件就是模板,改了即可。不过这个不觉得有什么问题啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如我在在pabebase里边判断一下用户Session是否已经超时或者有没有登录,但是在当前页面的page_load事件里边又用到了了Session进行权限的检查,那么运行的时候,他首先执行的是当前页面的page_load事件里边的权限检查方法,但这里一用到Session就会出现页面错误了,而如果能够先执行pagebase里边的检查Session方法的话,刚可以跳转到一个指定页面进行友好提示! 请问这个冲突各位是怎样解决的呢? 原来是这问题,很简单啊。方法一:pagebase在init中判断Session。实际上关于权限应该在Init中判断,因为这关系到页面会不会显示,而不是页面显示成什么样方法二:在pagebase中重写(override)基类的OnLoad方法,令判断Session在base.OnLoad之前执行。方法三:在pagebase中重写OnInit方法,提前注册Load事件,或者在pagebase的构造hanshu中提前注册Load事件。 首先要谢谢你,但是你的方法二与三我都试过了,为什么还是不行呢?我把代码贴出来你帮我看看该怎样改呀?下边是pagebase页的基类检查Session是否还存在的简化代码:public class PageBase : System.Web.UI.Page{ public PageBase() { // // TODO: 在此处添加构造函数逻辑 // } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Page_Load(object sender, System.EventArgs e) { if(Session["userID"] != null) { } else { Response.Redirect("出错页面",true); } }} 下边是当前新增页面的代码:private void Page_Load(object sender, System.EventArgs e){ //检查权限 CheckRight CheckRightRun = new CheckRight(); if (!CheckRightRun.CheckRightRun("Tra2_AblDev_A", "0", int.Parse(Session["userid"].ToString()))) { Response.Redirect("../../Portal/Error_NoButton.aspx?action=您没有访问此页面的权限", true); } }} 当前新增页面是继承pagebase基类的现在的情况是当我打开该页面的时候,他会先执行当前新增页面的Page_Load事件,然后才去执行pagebase基类的Page_Load事件进行Session的检查,这样的话,当前页的检查权限的时候需要取Session的时候肯定就出错了请问对于这段程序,该怎样修改才可以达到我想要的效果呢?即,先执行pagebase里边的Page_Load事件去检查Session是否存在?? 如果不存在就跳转至指定的出错页面!??? 你的新增页面是不是继承于PageBase类的?方法二:在PageBase中加入:override protected void OnLoad(EventArgs e){ if(Session["userID"] != null) { } else { Response.Redirect("出错页面",true); } //在这里才会触发Load事件 base.OnLoad();}方法三:protected PageBase(){ this.Load += new System.EventHandler(this.Page_Load);}然后删掉窗体设计器生成的代码 是继承自PageBase的我刚才是搞错了,加了这个OnLoad()方法的重载做测试,如下所示:override protected void OnLoad(EventArgs e){ Response.Write("<script language='javascript'>alert('PageBaseOK!');</script>"); base.OnLoad(e);}我不记得Response.Write("<script language=.....会在最后才执行了 哈哈现在改用下边这个做测试就OK了override protected void OnLoad(EventArgs e){ Response.Redirect("http://www.163.com",true); base.OnLoad(e);}多谢你了啊! 大哥!!! 关于选择的问题 richtextbox Rtf一个较难的问题,请高手们来帮忙解决 (急!)做VS2005“属性”窗口,可以用哪个控件? 关于跟新dataset进度条的问题? socket的异步通讯中,服务器端的 listener socket 怎么停止阿? 有去 "北京闪联互动网络科技" 面试过的吗? 顶者有分 怎么自行编写播放MMS流媒体服务器视频的播放器 COM/DCOM是什么?? 求助:表格转换成数组 如何做Window Service的界面,就象SqlServer的服务器管理一样 为什么我存入sql server表中的数字都被四舍五入了啊? 大家来帮帮忙呀,看看这个问题怎么解决
我把代码贴出来你帮我看看该怎样改呀?下边是pagebase页的基类检查Session是否还存在的简化代码:
public class PageBase : System.Web.UI.Page
{
public PageBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion private void Page_Load(object sender, System.EventArgs e)
{ if(Session["userID"] != null)
{
}
else
{
Response.Redirect("出错页面",true);
}
}}
private void Page_Load(object sender, System.EventArgs e)
{
//检查权限
CheckRight CheckRightRun = new CheckRight();
if (!CheckRightRun.CheckRightRun("Tra2_AblDev_A", "0", int.Parse(Session["userid"].ToString())))
{
Response.Redirect("../../Portal/Error_NoButton.aspx?action=您没有访问此页面的权限", true);
}
}
}
{
if(Session["userID"] != null)
{
}
else
{
Response.Redirect("出错页面",true);
} //在这里才会触发Load事件
base.OnLoad();
}方法三:protected PageBase()
{
this.Load += new System.EventHandler(this.Page_Load);
}然后删掉窗体设计器生成的代码
{
Response.Write("<script language='javascript'>alert('PageBaseOK!');</script>");
base.OnLoad(e);
}我不记得Response.Write("<script language=.....会在最后才执行了 哈哈
现在改用下边这个做测试就OK了
override protected void OnLoad(EventArgs e)
{
Response.Redirect("http://www.163.com",true);
base.OnLoad(e);
}多谢你了啊! 大哥!!!