2011-07-08 33 views
2

我一直试图在我的网站中对控制面板进行模板化,以便我可以将面板填充到其中。我很好,直到我的事件处理需要访问我的页面上的函数。我目前的测试将带我进入登录重定向页面。那么我怎么能得到这个事件处理程序来执行重定向呢?遇到我的事件处理程序(ASPX .NET 3.5)范围的问题

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"; 
    } 
} 

* 上*

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

真正体会到了帮助。谢谢!

回答

0

要进行重定向,您可以使用:

注: 假设你的登录页面被命名为login.aspx,它坐落在您的网站的根文件夹。

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层体系结构,但是我认为如果有一个自定义面板类会自动拥有所有内容,并且当您单击该按钮时它将启动相应的行为,那么在时间方面我会觉得很好。然而问题是当我想重定向它时,我必须在实际的login.cs中创建事件处理程序,这是aspx的一部分。 –

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!"); 
    } 
} 
相关问题