C# 从ascx文件调用aspx.cs代码
我在ascx文件中有一个按钮,我想点击这个按钮调用abc.aspx.cs文件的一个方法。 有没有办法从ascx.cs文件中执行此操作? 这是我的钮扣C# 从ascx文件调用aspx.cs代码,c#,asp.net,onclick,imagebutton,ascx,C#,Asp.net,Onclick,Imagebutton,Ascx,我在ascx文件中有一个按钮,我想点击这个按钮调用abc.aspx.cs文件的一个方法。 有没有办法从ascx.cs文件中执行此操作? 这是我的钮扣 <asp:ImageButton ID="ImageButton1" Style="padding-top: 80px; margin-right:10px;" runat="server" ImageUrl="~/App_Themes/Default/Images/Login/NH/Do
<asp:ImageButton ID="ImageButton1" Style="padding-top: 80px; margin-right:10px;" runat="server" ImageUrl="~/App_Themes/Default/Images/Login/NH/DownloadButton.jpg" />
asp.net中没有这样的工具,但您可以使用泛型处理程序(.ashx)来代替它您可以在aspx页面中定义一个公共方法,并使用此.Page调用它
((YourASPXPage)(this.Page)).MyMethod();
在ASPX页面中
public void MyMethod()
{
//Your code
}
为了在不耦合页面和用户控件的情况下以干净的方式执行此操作,您可以在父aspx表单订阅的用户控件中创建一个事件 有关C#中事件的详细信息,请参见此 UserControl.ascx.cs WebForm.aspx
请注意,该活动没有或有许多订阅者。如果要将数据传输到事件处理程序,则需要创建自己的EventArgs实现,并使用这些实现的实例,而不是
EventArgs.Empty
。这还允许您检查订阅者是否处理了事件,您可以向EventArgs添加一个handled
boolean属性,该属性由事件处理程序设置,然后在用户控件中进行评估。另一种方法是将页面设置为事件处理程序,如下所示。
public class MyUserControl : UserContro
{
public event EventHandler ImageButtonClicked;
private void ImageButton1_Click(object sender, EventArgs e)
{
if (ImageButtonClicked != null) // Check against null as there may not be any subscribers
ImageButtonClicked(this, EventArgs.Empty);
}
// ...
}
<!-- ... -->
<uc:MyUserControl ID="myUserCtrl" runat="server" ImageButtonClicked="myUserCtrl_ImageButtonClicked" />
<!-- ... -->
// ...
private void myUserCtrl_ImageButtonClicked(object sender, EventArgs e)
{
// Call method on page.
}
// ...