.vb コードから動的にロードされるカスタム コントロールを作成しようとしています。
これが、ファイル「controlcar.ascx」内のカスタム コントロール「ControlCar」です。
<%@ Control Language="VB" ClassName="ControlCar" %>
<script runat="server">
Private m_car As Car = Nothing
Public Property Car() As Car
Get
Car= m_car
End Get
Set(ByVal value As Car)
m_car = value
End Set
End Property
Protected Sub Panel_OnLoad(ByVal sender As Object, ByVal e As System.EventArgs)
If Me.m_car Is Nothing Then
lit_color.Text = "(m_car Is Nothing)"
Else
lit_color.Text = "color of Me.m_car is (" & Me.m_car.Color & ")"
End If
End Sub
</script>
<asp:Panel ID="panel" OnLoad="Panel_OnLoad" runat="server">
this is a car<br />
color = <asp:Literal ID="lit_color" runat="server"></asp:Literal><br />
<br />
</asp:Panel>
これは、イベントに .vb コードを使用するファイル「cars.aspx」の ASP Web ページです...
<%@ Page Language="vb" Explicit="true" Inherits="PageBase" Src="/code/cars.vb"%>
<html>
<body>
<!-- Html code here --->
<asp:panel ID="panel_cars" runat="server">
</asp:panel>
</body>
そして、これがファイル「cars.vb」の私の.vbコードです
Private Sub CreateCar()
Dim car As Car = new Car()
Dim control As ControlCar = Nothing
control= CType(LoadControl("/code/controlcar.ascx"), ControlCar)
control.Car = car
panel_cars.Controls.Add(control)
End Sub
しかし、「ControlCar」がcars.vbで認識されていないと言って失敗します。
.aspxファイルで.vbコードを移動し、ディレクティブを使用すると、機能することがわかります
<%@ Register TagPrefix="uc" TagName="ControlCar" Src="/code/controlcar.ascx" %>
しかし、私の例のように .vb コードと .aspx コードを分離する必要があります。
.vb ファイルで「ControlCar」タイプ (.ascx で定義) を認識させるにはどうすればよいですか?