- PR -

Web Formを実行時ダイナミックに生成するには

1
投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-04-15 16:01
Web Formを実行時ダイナミックに生成するには

Visual Basic のクラスを作成してWeb Formを実行時にダイナミックに生成するサンプルです。

MakeAutoForm.bat をダブルクリックして、VBのクラスモジュール AutoForm.vb をコンパイルして AutoForm.dll を生成したら、アプリケーションの bin ディレクトリにコピーします。


ShowAutoForm.aspx
をクリックするとクラスモジュールの Sub CreateChildControls が実行されてWeb Formを自動生成します。Sub CreateChildControls には、Overrides を指定していますのでBase class が置換されます。

MakeAutoForm.bat
vbc /t:library /r:system.dll,system.web.dll AutoForm.vb
pause


AutoForm.vb

コード:
Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Public Class AutoForm
  Inherits Page

  Dim txtTextBox As New TextBox
  Dim lblLabel As New Label

  Protected Overrides Sub CreateChildControls

    Dim strOpenHTML As String
    strOpenHTML = "<html><head><title>Auto Form</title></head>"
    strOpenHTML &= "<body>"
    Controls.Add( New LiteralControl(strOpenHTML))

    Dim frmForm As New HTMLForm
    frmForm.ID = "myForm"
    Controls.Add(frmForm)

    frmForm.Controls.Add(New LiteralControl("<p>Input Data:<br>"))

    txtTextBox.ID = "myTextBox"
    frmForm.Controls.Add( txtTextBox )

    frmForm.Controls.Add( New LiteralControl("<br>"))

    Dim btnButton As New Button
    btnButton.Text = "Click Here!"
    AddHandler btnButton.Click, AddressOf Button_Click
    frmForm.Controls.Add(btnButton)

    frmForm.Controls.Add( New LiteralControl("<p>"))

    lblLabel.ID = "myLabel"
    frmForm.Controls.Add(lblLabel)

    Dim strCloseHTML As String
    strCloseHTML = "</body></html>"
    Controls.Add( New LiteralControl(strCloseHTML))

  End Sub

  Sub Button_Click( s As Object, e As EventArgs )
    lblLabel.Text = txtTextBox.Text
  End Sub

End Class



ShowAutoForm.aspx

<%@ Page inherits="AutoForm" %>

ShowAutoForm.aspx ファイルには、Page directive を記述するだけで Web Form が自動生成されます。このように、プレゼンテーションコンテンツとアプリケーションロジックを DLL 化することにより、ソースコードを完全に保護することができます。

Happy Programming!
Akio Kasai

1

スキルアップ/キャリアアップ(JOB@IT)