gpt4 book ai didi

C# .net 将事件从页面冒泡到用户控件(子)

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:51 25 4
gpt4 key购买 nike

用户控件(子,doesStuff.ascx)页面可以对来自页面(父,page.aspx)的事件使用react吗?我在父页面上有一个按钮。单击我想在 child 身上触发一个事件。

doesStuff.ascx:

//像这样

((doesStuff)this.Page).someButtonControl.click;

//或

something.Click += new EventHandler(someReference???);

最佳答案

child 到 parent 冒泡

如果您想将参数从子控件传递给父控件,您可以使用 CommandEventHandler .

父 ASPX

<%@ Register Src="~/DoesStuff.ascx" TagPrefix="uc1" TagName="DoesStuff" %>    
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<uc1:DoesStuff runat="server" ID="DoesStuff"
OnChildButtonClicked="DoesStuff_ChildButtonClicked" />
</form>
</body>
</html>

背后的父代码

public partial class Parent : System.Web.UI.Page
{
protected void DoesStuff_ChildButtonClicked(object sender, EventArgs e) { }
}

子ASCX

<asp:Button ID="BubbleUpButton" runat="server" 
Text="Bubble Up to Parent"
OnClick="BubbleUpButton_OnClick" />

子代码隐藏

public partial class DoesStuff : System.Web.UI.UserControl
{
public event EventHandler ChildButtonClicked = delegate { };

protected void BubbleUpButton_OnClick(object sender, EventArgs e)
{
// bubble up the event to parent.
ChildButtonClicked(this, new EventArgs());
}
}

parent 对 child

在 ASP.Net Web Form 中在没有底层控制的情况下将一个事件调用到另一个事件不是一个好的做法。

相反,您想创建一个公共(public)方法,并从 Parent 调用它。例如,

// Parent
public partial class Parent : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var doesStuff = DoesStuff1 as DoesStuff;
if (doesStuff != null) DoesStuff1.DisplayMessage("Hello from Parent!");
}
}

// Child
public partial class DoesStuff : System.Web.UI.UserControl
{
public void DisplayMessage(string message)
{
ChildLabel.Text = message;
}
}

关于C# .net 将事件从页面冒泡到用户控件(子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42056917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com