gpt4 book ai didi

asp.net - 从用户控件调用父级中的方法

转载 作者:行者123 更新时间:2023-12-02 01:03:11 24 4
gpt4 key购买 nike

出于一些与业务相关的原因,我制作了一个向导导航用户控件。非常简单:下一个/上一个/完成按钮。

每个使用这个导航用户控件的父页面都有一个 SaveData 函数,它可以保存数据并做一些其他的事情。

当用户单击下一步/上一步/完成时,我想在重定向到其他页面之前调用父级的 SaveData 函数。我应该怎么做,或者您可以推荐更好的方法(如果可能请提供代码示例)?

提前致谢!

最佳答案

UserControl 不应调用 Parent 的函数。这不是一个好的设计。

相反,您希望将事件从 UserControl 冒泡到 Parent 页面。

注意:我的项目的命名空间是DemoWebForm

我的用户控件.ascx

<%@ Control Language="C#" AutoEventWireup="true" 
CodeBehind="MyUserControl.ascx.cs"
Inherits="DemoWebForm.MyUserControl" %>

<asp:Button runat="server" ID="NextButton"
OnClick="NextButton_Click" Text="Next" />

<asp:Button runat="server" ID="PreviousButton"
OnClick="PreviousButtonn_Click" Text="Previous" />

<asp:Button runat="server" ID="FinishButton"
OnClick="FinishButton_Click" Text="Finish" />

我的用户控件.ascx.cs

public partial class MyUserControl : System.Web.UI.UserControl
{
public event ClickEventHandler NextClicked;
public event ClickEventHandler PreviousClicked;
public event ClickEventHandler FinishClicked;

protected void NextButton_Click(object sender, EventArgs e)
{
if (NextClicked != null)
{
NextClicked(sender, e);
}
}

protected void PreviousButtonn_Click(object sender, EventArgs e)
{
if (PreviousClicked != null)
{
PreviousClicked(sender, e);
}
}

protected void FinishButton_Click(object sender, EventArgs e)
{
if (FinishClicked != null)
{
FinishClicked(sender, e);
}
}
}

父类.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Parent.aspx.cs" 
Inherits="DemoWebForm.Parent" %>

<%@ Register Src="MyUserControl.ascx" TagName="MyUserControl" TagPrefix="uc1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:MyUserControl ID="MyUserControl1" runat="server"
OnNextClicked="MyUserControl1_NextClicked"
OnPreviousClicked="MyUserControl1_PreviousClicked"
OnFinishClicked="MyUserControl1_FinishClicked" />
<asp:Literal runat="server" ID="MessageLiteral" />
</form>
</body>
</html>

父类.aspx.cs

public partial class Parent : System.Web.UI.Page
{
protected void MyUserControl1_NextClicked(object sender,EventArgs e)
{
MessageLiteral.Text = "Next button was clicked";
}

protected void MyUserControl1_PreviousClicked(object sender, EventArgs e)
{
MessageLiteral.Text = "Previous button was clicked";
}

protected void MyUserControl1_FinishClicked(object sender, EventArgs e)
{
MessageLiteral.Text = "Finish button was clicked";
}
}

关于asp.net - 从用户控件调用父级中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25921207/

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