从ascx文件中调用aspx.cs代码

时间:2014-03-31 06:52:49

标签: 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/DownloadButton.jpg" />

3 个答案:

答案 0 :(得分:1)

为了在没有耦合页面和用户控件的情况下以干净的方式执行此操作,您可以在父aspx表单订阅的用户控件中创建一个事件。

有关C#中事件的详细信息,请参阅此link

UserControl.ascx.cs

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

    // ...
}

WebForm.aspx

<!-- ... -->
<uc:MyUserControl ID="myUserCtrl" runat="server" ImageButtonClicked="myUserCtrl_ImageButtonClicked" />
<!-- ... -->

WebForm.aspx.cs

// ...
private void myUserCtrl_ImageButtonClicked(object sender, EventArgs e)
{
    // Call method on page.
}
// ...

请注意,该活动没有或有许多订阅者。如果要将数据传输到事件处理程序,则需要创建自己的EventArgs实现并使用这些实例而不是EventArgs.Empty。这也允许您检查事件是否已由订阅者处理,您可以向EventArgs添加Handled布尔属性,该事件由事件处理程序设置并在之后在用户控件中进行评估。

答案 1 :(得分:0)

在asp.net中没有这样的功能但你可以使用通用处理程序(.ashx)而不是这个

答案 2 :(得分:0)

您可以使用this.Page

在aspx Page中定义一个公共方法
((YourASPXPage)(this.Page)).MyMethod();

在ASPX页面

public void MyMethod()
{
     //Your code     
}