在我的事件处理程序(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);
非常感谢你的帮助。谢谢!
可以使用:
注意:假设您的登录页面名为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!");
}
}