Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式嵌套ASP.NET用户控件_Asp.net_Vb.net - Fatal编程技术网

以编程方式嵌套ASP.NET用户控件

以编程方式嵌套ASP.NET用户控件,asp.net,vb.net,Asp.net,Vb.net,我有一个用户控件,它以编程方式多次包含第二个用户控件,但最终的结果是根本不会为这些控件生成HTML Default.aspx <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestApplication._Default" %> <%@ Register TagName="Ten" TagPrefix="me" Src="~/Ten.ascx" %>

我有一个用户控件,它以编程方式多次包含第二个用户控件,但最终的结果是根本不会为这些控件生成HTML

Default.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestApplication._Default" %>
<%@ Register TagName="Ten" TagPrefix="me" Src="~/Ten.ascx" %>

<html>
<head runat="server"></head>
<body>
    <form id="form1" runat="server">
        <me:Ten ID="thisTen" runat="server" />
    </form>
</body>
</html>
1.ascx

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="One.ascx.vb" Inherits="TestApplication.One" %>

<asp:Button ID="OneButton" Text="Press ME!" runat="server" />
编辑2:

Dim o As One = Me.LoadControl("~/One.ascx")
o._number = I.ToString
List.Controls.Add(o)

我不会在OnInit事件中执行此操作,但这可能与您的问题有关,也可能与您的问题无关。相反,我将在OnLoad事件中加载控件

但是,使用
new
关键字通常不是加载用户控件的方式。对不起,我只懂C#,不知道确切的翻译:

在C#中:

这在VB.NET中看起来正确吗

Dim one As One = Me.LoadControl("~/Controls/One.ascx")

加载控件后,您可能必须删除构造函数并设置属性。

我不会在OnInit事件中执行此操作,但这可能与您的问题有关,也可能与您的问题无关。相反,我将在OnLoad事件中加载控件

但是,使用
new
关键字通常不是加载用户控件的方式。对不起,我只懂C#,不知道确切的翻译:

在C#中:

这在VB.NET中看起来正确吗

Dim one As One = Me.LoadControl("~/Controls/One.ascx")

加载控件后,您可能需要删除构造函数并设置属性。

是的,除了构造函数有一个参数外,这可以工作。这会导致HttpCompileException。我可以通过在数组中传递参数来克服这个问题。但是这并不能解决问题,因为仍然没有生成html。请注意,如果要处理在子控件中从父控件生成的事件,必须使用Page_Init事件来创建它们。否则页面加载事件将正常工作。是的,这将正常工作,除非构造函数有参数。这会导致HttpCompileException。我可以通过在数组中传递参数来克服这个问题。但是这并不能解决问题,因为仍然没有生成html。请注意,如果要处理在子控件中从父控件生成的事件,必须使用Page_Init事件来创建它们。否则页面加载事件将正常工作。
Dim p() As String = {I.ToString}
Dim o As One = Me.LoadControl(New One("").GetType, p)
List.Controls.Add(o)
Dim o As One = Me.LoadControl("~/One.ascx")
o._number = I.ToString
List.Controls.Add(o)
One one = (One)this.LoadControl("~/Controls/One.ascx");
Dim one As One = Me.LoadControl("~/Controls/One.ascx")