如何在aspx页面中找到用户控件的id

时间:2011-01-28 13:17:19

标签: asp.net webusercontrol

我有一个aspx Web应用程序,其中存在1个aspx页面和1个Web用户控件。我在aspx页面中添加了4个用户控件实例。用户控件中有一个删除按钮,用于从aspx页面中删除控件。如果单击用户控件的“删除”按钮,如何找到从aspx页面单击的用户控件的“删除”按钮。请让我知道解决方案...

提前致谢:)

3 个答案:

答案 0 :(得分:6)

我会向用户控件添加一个事件,并在后面的代码中捕获该事件。这是一个例子:

Default.aspx网络表单:

注册用户控件:

<%@ Register TagPrefix="so" TagName="UserControl" Src="~/WebUserControl.ascx" %>

上述控制的4个实例。请注意,我们正在处理下面定义的OnRemoving事件:

    <so:UserControl ID="UserControl1" runat="server" Title="Control 1" OnRemoving="UserControl1_Removing" />
    <so:UserControl ID="UserControl2" runat="server" Title="Control 2" OnRemoving="UserControl2_Removing" />
    <so:UserControl ID="UserControl3" runat="server" Title="Control 3" OnRemoving="UserControl3_Removing" />
    <so:UserControl ID="UserControl4" runat="server" Title="Control 4" OnRemoving="UserControl4_Removing" />

Default.aspx Code Behind:

在后面的代码中,我处理每个控件的OnRemoving事件:

protected void UserControl1_Removing(object sender, EventArgs e)
{
    WebUserControl ctrl = (WebUserControl)sender;
    ctrl.Visible = false;
}
protected void UserControl2_Removing(object sender, EventArgs e)
{
    WebUserControl ctrl = (WebUserControl)sender;
    ctrl.Visible = false;
}
protected void UserControl3_Removing(object sender, EventArgs e)
{
    WebUserControl ctrl = (WebUserControl)sender;
    ctrl.Visible = false;
}
protected void UserControl4_Removing(object sender, EventArgs e)
{
    WebUserControl ctrl = (WebUserControl)sender;
    ctrl.Visible = false;
}

用户控制网络表单:

网络用户控件包含一个“删除”按钮:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

<fieldset>
  <legend><%=Title %></legend>
  <asp:Button ID="Button_Remove" runat="server" Text="Remove" OnClick="Button_Remove_Click" />
</fieldset>

用户控制代码落后:

最后,以下是如何为用户控件编写事件代码:

public partial class WebUserControl : System.Web.UI.UserControl
{
    // the event delegates may listen for
    public event EventHandler Removing;
    public string Title { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button_Remove_Click(object sender, EventArgs e)
    {
        // raise the event for attached delegates
        if (Removing != null)
            Removing(this, EventArgs.Empty);
    }
}

最终结果:

以上示例生成以下网页。单击删除按钮时,该控件将消失:

Final product

祝你好运!!

答案 1 :(得分:1)

如果您尝试执行此客户端,则可以像这样引用ID:

var removeButtonId = "<%=removeButton.ClientID %>";

如果您已点击点击事件,可以从sender参数中获取,如下所示:

void removeButton_Click(object sender, EventArgs e)
{
    Button removeButton = sender as Button;
    string id = removeButton.ID;
}

答案 2 :(得分:0)

一种简单的方法:让用户控件实现RemoveClicked事件。然后,单击删除按钮时,在按钮单击事件处理程序中,触发RemoveClicked事件。该页面可以知道删除请求来自哪个用户控件。如果您愿意,您甚至可以通过事件参数传递按钮。对于所有4个用户控件,页面也必须附加到此事件,仅供参考。

此建议假设您正在寻找服务器端解决方案,而不是客户端解决方案。

HTH。