簡體   English   中英

從ascx文件中調用aspx.cs代碼

[英]Call aspx.cs code fron ascx file

我在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" />

為了以一種干凈的方式執行此操作而不將頁面和用戶控件耦合在一起,可以在用戶控件中創建父aspx表單所訂閱的事件。

有關C#中事件的詳細信息,請參見此鏈接

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 這也可以讓你檢查該事件是否已經被用戶處理,你可以添加一個Handled布爾屬性到您的EventArgs由一個事件處理程序設置和評估用戶控件之后。

asp.net中沒有這樣的工具,但是您可以使用通用處理程序(.ashx)代替

您可以在aspx Page中定義一個公共方法,使用this.Page對其進行調用

((YourASPXPage)(this.Page)).MyMethod();

在ASPX頁面

public void MyMethod()
{
     //Your code     
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM