VBASP.Netでカスタムコントロールを機能させようとしています
いくつかのスレッドを読みましたが、あまり役に立たないようです。私は以下を含む解決策を持っています:
- 「SiteCI」と呼ばれるウェブサイトプロジェクト
- 「SiteCI-classes」と呼ばれるクラスライブラリプロジェクト
Webサイトプロジェクトにはライブラリプロジェクトへの参照があり、ライブラリDLLはWebサイトプロジェクトのbinフォルダー内に正しく生成されます。
Webサイトプロジェクト内にランダムなクラスを作成すると、次のように入力して、MailLinkというテストコントロールクラスにアクセスできます。
SiteCI_classes.Controls.MailLink
それは完璧に機能し、Visual Studioは私にそれを提案するので、2つのプロジェクト間のリンクは正しく設定されています。
プロジェクトが実際に機能するかどうかを確認するために、毎回プロジェクトをクリーンアップ/再ビルドすることに注意してください。これは、DLLビルドが正しくないという問題ではありません。
system.web内のWebConfigファイル->ページ->追加したコントロール:
<add assembly="SiteCI-classes" namespace="Controls" tagPrefix="custom" />
しかし、ASP.Netページで次を追加すると:
<custom:MailLink runat="server" id="test1"></custom:MailLink>
不明なサーバータグ「custom:MailLink」エラーが発生します。
Web構成ファイルの入力中に間違いがなかったかどうかを確認するために、SiteCI-classesをSiteCI_classesに変更しようとしましたが、アセンブリを読み込めなかったというエラーが表示されたので、パーツは問題ないと思います。 、次に* namespace ="SiteCI_classes.Controls"*またはnamespace="SiteCI-classes.Controls"のnamespace="Controls"を変更しようとしましたが、不明なサーバータグの問題は修正されませんでした。
どうしたらいいのかわからない…うまくいくはずですよね?
これは、ライブラリプロジェクトのコントロールと呼ばれるフォルダにあるMailLink.vbです。これは、テスト目的でMicrosoftページで選択したクラスです。
誰かが私に何をチェックするべきかについてのヒントをくれたら、私は非常にありがたいです。
Namespace Controls
< _
AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal), _
AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal), _
DefaultProperty("Email"), _
ParseChildren(True, "Text"), _
ToolboxData("<{0}:MailLink runat=""server""> </{0}:MailLink>") _
> _
Public Class MailLink
Inherits WebControl
< _
Bindable(True), _
Category("Appearance"), _
DefaultValue(""), _
Description("The e-mail address.") _
> _
Public Overridable Property Email() As String
Get
Dim s As String = CStr(ViewState("Email"))
If s Is Nothing Then s = String.Empty
Return s
End Get
Set(ByVal value As String)
ViewState("Email") = value
End Set
End Property
< _
Bindable(True), _
Category("Appearance"), _
DefaultValue(""), _
Description("The text to display on the link."), _
Localizable(True), _
PersistenceMode(PersistenceMode.InnerDefaultProperty) _
> _
Public Overridable Property Text() As String
Get
Dim s As String = CStr(ViewState("Text"))
If s Is Nothing Then s = String.Empty
Return s
End Get
Set(ByVal value As String)
ViewState("Text") = value
End Set
End Property
Protected Overrides ReadOnly Property TagKey() _
As HtmlTextWriterTag
Get
Return HtmlTextWriterTag.A
End Get
End Property
Protected Overrides Sub AddAttributesToRender( _
ByVal writer As HtmlTextWriter)
MyBase.AddAttributesToRender(writer)
writer.AddAttribute(HtmlTextWriterAttribute.Href, _
"mailto:" & Email)
End Sub
Protected Overrides Sub RenderContents( _
ByVal writer As HtmlTextWriter)
If (Text = String.Empty) Then
Text = Email
End If
writer.WriteEncodedText(Text)
End Sub
End Class
End Namespace