【发布时间】:2012-02-25 17:37:49
【问题描述】:
我正在向页面动态添加 Web 用户控件。使用仅采用指向.ascx 的虚拟路径的LoadControl 方法效果很好。但是,采用类型和参数数组的LoadControl 的重载让我有些头疼。
Web 用户控件按预期实例化,但 Web 用户控件中包含的控件为 null,并且在尝试使用它们时立即出现异常。奇怪,因为它在使用LoadControl 的第一个版本时可以工作。
web 用户控件,简单,带有Literal 控件:
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="MyControl.ascx.vb" Inherits="MyControl" %>
<asp:Literal ID="myLiteral" runat="server"></asp:Literal>
控件背后的代码:
Public Class MyControl
Inherits System.Web.UI.UserControl
Public Property Data As MyData
Public Sub New()
End Sub
Public Sub New(data As MyData)
Me.Data = data
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
myLiteral.Text = Data.ID ' The Literal is null, but ONLY when I use the second LoadControl() method!
End Sub
End Class
以及来自.aspx 的相关代码,我试图从中动态加载控件:
Private Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
Dim x = LoadControl(GetType(MyControl), New Object() {New MyData With {.ID = 117}})
Page.Controls.Add(x)
' Using LoadControl("MyControl.ascx") works as expected!
End Sub
【问题讨论】:
标签: .net vb.net webusercontrol