在我的事件处理程序(ASPX . net 3.5)的范围内有问题

本文关键字:范围内 有问题 net 事件处理 我的 程序 ASPX | 更新日期: 2023-09-27 18:01:30

我一直在尝试模板控制面板在我的网站,所以我可以采取一个面板和填充它完全。在事件处理需要访问页面上的函数之前,一切都很好。我当前的测试将带我到登录重定向页面。那么,如何让这个事件处理程序执行重定向呢?

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);

非常感谢你的帮助。谢谢!

在我的事件处理程序(ASPX . net 3.5)的范围内有问题

可以使用:

注意:假设您的登录页面名为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");
}

如果您希望事件能够访问页面,那么页面需要订阅click事件。

又名:

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
}

我刚刚发现System.Web.HttpContext.Current将为我获取页面的当前上下文。只要自定义类是应用程序的一部分(这个当然在apps文件夹中),我就可以开始了。下面是我用来制作自定义按钮的快速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!");
    }
}