gpt4 book ai didi

c# - DotNetNuke - 动态加载的子控件上的事件未触发

转载 作者:行者123 更新时间:2023-11-30 18:00:23 25 4
gpt4 key购买 nike

我正在创建一个网站遍历模块,它将在不同页面上动态加载不同的控件。由于某种原因,子控件上的事件没有触发。

主视图

<%@ Control language="C#" Inherits="DotNetNuke.Modules.SiteWalkthrough.View" AutoEventWireup="false"  Codebehind="View.ascx.cs" %>
<%@ Register Src="/DesktopModules/SiteWalkthrough/Controls/Start.ascx" TagPrefix="sw" TagName="start" %>

<asp:MultiView ID="MultiView" runat="server">
<asp:View ID="mvStart" runat="server">
<sw:start ID="ucStart" runat="server"></sw:start>
</asp:View>
</asp:MultiView>

主视图代码隐藏

namespace DotNetNuke.Modules.SiteWalkthrough
{
public partial class View : SiteWalkthroughModuleBase, IActionable
{
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}

private void Page_Load(object sender, System.EventArgs e)
{
MultiView.SetActiveView(mvStart);
}
}
}

用户控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Start.ascx.cs" Inherits="DotNetNuke.Modules.SiteWalkthrough.Controls.Start" %>

<div>
<span>Welcome!</span>
<span><asp:Button ID="btnNext" runat="server" Text="Okay" CssClass="btnNext" OnClick="btnNext_Click" /></span>
</div>

用户控制代码隐藏

namespace DotNetNuke.Modules.SiteWalkthrough.Controls
{
public partial class Start : PortalModuleBase
{
protected void Page_Load(object sender, EventArgs e) {}

protected void btnNext_Click(object sender, EventArgs e)
{
// this event never fires
}
}
}

此代码适用于标准 ASP.NET 项目但不适用于 DotNetNuke。我是否必须在主视图的 OnInit 中手动注册事件?

最佳答案

我在这里尝试一下,但我的猜测是您需要在 _init 而不是控件的 _load 中绑定(bind)控件和事件。这与页面生命周期有关。

我会关闭控件中的“AutoEventWireup”并手动明确编码所有事件绑定(bind)。

关于c# - DotNetNuke - 动态加载的子控件上的事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147093/

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