0
我有一個用戶控件,當文件上傳到它的內部FileUpload控件時引發一個事件。當用戶控件只有一個實例將事件註冊到頁面時,它可以正常工作。當我添加第二個實例時,第一個事件不再起作用。如果我從第一個或第二個實例觸發事件,它們最終都會運行UserControl2_FileSelected方法。我想爲頁面上的每個用戶控件運行一個單獨的方法。如何提升用戶控件的單獨事件實例?
頁:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MyUserControls.Default" %>
<%@ Register Src="~/Classes/Controls/FileUploader.ascx" TagPrefix="uc1" TagName="FileUploader" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<uc1:FileUploader runat="server" id="FileUploader1" Text="Uploader 1" />
<uc1:FileUploader runat="server" ID="FileUploader2" Text="Uploader 2" />
</asp:Content>
代碼隱藏頁:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
FileUploader1.FileSelected += new EventHandler(UserControl1_FileSelected);
FileUploader2.FileSelected += new EventHandler(UserControl2_FileSelected);
}
protected void UserControl1_FileSelected(object sender, EventArgs e)
{
//handle event from instance 1
System.Diagnostics.Debug.WriteLine("Control 1");
}
protected void UserControl2_FileSelected(object sender, EventArgs e)
{
//handle event from instance 2
System.Diagnostics.Debug.WriteLine("Control 2");
}
}
用戶控件的代碼背後:
public partial class FileUploader : System.Web.UI.UserControl
{
public event EventHandler FileSelected;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
if (this.FileUpload1.HasFile)
{
this.FileSelected(this, e);
}
}
}
}