2011-07-08 11 views
2

私は自分のサイトでコントロールパネルのテンプレートを作成しようとしています。私のイベント処理が自分のページ上の関数にアクセスする必要がある時点まではうまくいく。私の現在のテストは私をログインリダイレクトページに連れて行きます。では、このイベントハンドラでリダイレクトを実行するにはどうしたらよいですか?私のイベントハンドラ(ASPX .NET 3.5)のスコープを回避する問題がある

protected void Page_Load(object sender, EventArgs e) 
DebugButton btnDebug = new DebugButton(); 
PnlMain.Controls.Add(btnDebug); 

*ページ上

public class DebugButton : Button 
{ 
    public string msg; 
    public DebugButton() 
    { 
     this.Click += new System.EventHandler(this.Button1_Click); 
     this.ID = "txtdbgButton"; 
     this.Text = "Click me!"; 
     msg = "not set"; 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     msg = "Event handler clicked"; 
    } 
} 

* は本当に助けに感謝します。ありがとう!

注: は、ログインページがlogin.aspxという名前で、それはあなたのウェブサイトのルートフォルダにあると仮定すると、使用可能なリダイレクトを行うに

答えて

0

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("~/login.aspx"); 
} 

または

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Server.Transfer("login.aspx"); 
} 
+0

ありがとう、本当にありがとう!私がしたかったことのアイデアは、すべてのページの中で再利用できる完全に含まれたWebコントロールを作成することです。私はN-Tierアーキテクチャを好んでいますが、時間を賢明に考えれば、カスタムパネルクラスを自動的にすべて持つことができればいいと思っています。ボタンをクリックすると、適切な動作が開始されます。しかし、問題は私がリダイレクトしたいとき、私はaspxの一部である実際のlogin.csにイベントハンドラを作成する必要があります。 –

0

あなたがイベントをページへのアクセス権を持つようにしたい場合は、そのページには、クリックイベントをサブスクライブする必要があります。

別名:ページ上の

protected void Page_Load(object sender, EventArgs e) 
{ 
    DebugButton btnDebug = new DebugButton(); 
    btnDebug.Click += new System.EventHandler(Button1_Click); 
    PnlMain.Controls.Add(btnDebug); 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // access whatever you want on the page here 
} 
0

私はちょうどそのSystem.Web.HttpContext.Currentは私のページの現在のコンテキストを取得することが分かりました。カスタムクラスがアプリケーションの一部である限り(これはもちろんアプリケーションのフォルダにあります)、私は行きたいです。カスタムボタンを作るために使ったTestTemplateのサンプルを紹介します。

public class TestTemplate : Button 
{ 
    public TestTemplate() 
    { 
     this.Text = "Click Me"; 
     this.ID = "btnClickMe"; 
     this.Click += new System.EventHandler(this.EventHandler); 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    public void EventHandler(object sender, EventArgs e) 
    { 
     //System.Web.HttpContext.Current.Server.Transfer("Default.aspx"); 
     System.Web.HttpContext.Current.Response.Write("This is a test!"); 
    } 
} 
関連する問題