先抱歉各位大神,分不多,還請海涵,
問題是這樣的,
public class memgPage : System.Web.UI.Page
{
public memgPage()
{
this.Load += new EventHandler(memgPage_Load);
}
protected void memgPage_Load(object sender, EventArgs e)
{
if (!IsLogin())
{
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>");
Response.End();
}
}
private bool IsLogin()
{
if (Session["user"] != null)
{
return true;
}
return false;
}
}
我的一個頁面繼承這個類了
子頁面
public partial class User_Edit : memgPage
{
//此處想處理登錄超時,但是程式執行到上面就跳轉了,此處如何處理?
}
謝謝了
uj5u.com熱心網友回復:
重寫父類,和asp.net沒有任何關系,它只是c#的基本語法。你需要先熟悉c#的繼承。了解下override
public override ActionResult Index()
{
}
uj5u.com熱心網友回復:
大神,你好,我之前是這么寫的,還是報錯,才來問的,之前是這樣的:public override void memgPage_Load(object sender, EventArgs e)
{
}
報什么找不到什么方法····之類的話,請大神賜教下,剛前端轉了后端·····
uj5u.com熱心網友回復:
問題要說清楚點。高效的解決問題,也需要會高效的提問題。完整的提一個問題,我一般都會提交:
1、問題場景,包括作業系統,資料庫,技術堆疊
2、我的關鍵代碼
3、我的具體錯誤
你的“報什么找不到什么方法····之類的話”,具體是什么錯誤?說這么模糊是讓大家猜么?請貼錯誤的具體圖片或者文字!
uj5u.com熱心網友回復:
你子頁面代碼也沒有貼,少太多東西了。uj5u.com熱心網友回復:
virtual protected void memgPage_Load(object sender, EventArgs e)
{
if (!IsLogin())
{
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>");
Response.End();
}
}
uj5u.com熱心網友回復:
要注意一下,物件(類)的物件實體化方法并不能繼承,所以你寫的this.Load += new EventHandler(memgPage_Load);這個代碼是不能繼承的。所以你必須在子類頁面的實體化方法中再寫一遍!!
uj5u.com熱心網友回復:
asp.net webform 會自動查找并呼叫頁面的幾個事件處理方法,所以并不需要在實體化方法中注冊(注冊了反而會執行兩遍)。你應該判斷一下你的 asp.net 中,有沒有必要寫上述代碼。上述代碼要么應該洗掉,要么就是要在子頁面中重寫一遍!!
uj5u.com熱心網友回復:
提示 :沒有找到適合的方法來重寫
uj5u.com熱心網友回復:
我重寫了,可是每當他執行到父類的memgPage_Load頁面就跳轉了,不在執行子類的頁面了,請大神賜教下,感謝uj5u.com熱心網友回復:
上面的父類是其他同事寫的,不給改,請問子頁面如何才能重寫父類的memgPage_Load,讓他不在父類里面跳轉?uj5u.com熱心網友回復:
那就不能繼承它,你自己另外一遍頁面。
在一個組織中,你可能沒有走設計流程。如果走了設計流程、這個設計是很合理的但是還不能執行,那么從組織上說,你的同事應該被開除。
uj5u.com熱心網友回復:
走正規的按照介面、繼承的設計和執行流程。“偷雞摸狗”的注入方式會造成詭異的東西,造成千里之堤毀于蟻穴的效果。所以我首先要告訴你理念,反對胡亂“玩技術”的設計方式。
uj5u.com熱心網友回復:
走正規的按照介面、繼承的設計和執行流程。
“偷雞摸狗”的注入方式會造成詭異的東西,造成千里之堤毀于蟻穴的效果。所以我首先要告訴你理念,反對胡亂“玩技術”的設計方式。
uj5u.com熱心網友回復:
解釋一下你的問題1 一級繼承 memgPage : System.Web.UI.Page
2 二級繼承 User_Edit :memgPage
那么問題很明顯,當加載User_Edit頁面時,會先去初始化memgPage的父類建構式,
然后才實體化User_Edit的建構式。這是你問題的重點,也是繼承概念的基礎知識
因此
他跑到
public memgPage()
{
this.Load += new EventHandler(memgPage_Load);
}
protected void memgPage_Load(object sender, EventArgs e)
{
if (!IsLogin())
{
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>");
Response.End();
}
}
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>"); 就跳轉了啊。
uj5u.com熱心網友回復:
就事論事,可以這樣改寫
public class memgPage : System.Web.UI.Page
{
public memgPage()
{
this.Load += new EventHandler(memgPage_Load);
}
protected void memgPage_Load(object sender, EventArgs e)
{
if (!IsLogin())
{
if(!DoSomething()) return;
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>");
Response.End();
}
}
private bool IsLogin()
{
if (Session["user"] != null)
{
return true;
}
return false;
}
protected virtual bool DoSomething()
{
return true;
}
}
public partial class User_Edit : memgPage
{
protected override bool DoSomething()
{
// do something
return false;
}
}
代碼手寫,僅做參考。
uj5u.com熱心網友回復:
protected void memgPage_Load(object sender, EventArgs e){
if (!IsLogin())
{
Response.Write("<script>parent.location.href='https://bbs.csdn.net/topics/login.aspx'</script>");
Response.End();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/100698.html
標籤:C#
