我正在尝试让自定义控件在VB ASP.Net中工作
我已经阅读了一些主题,但它似乎对我没有多大帮助。我有一个解决方案,包括:
- 名为“SiteCI”的网站项目
- 名为“SiteCI-classes”的类库项目
网站项目有对库项目的引用,库DLL在网站项目的bin文件夹内正确生成。
当我在网站项目中创建一个随机类时,我可以通过键入以下内容访问名为 MailLink 的测试控制类:
SiteCI_classes.Controls.MailLink
它完美运行,Visual Studio 向我建议,因此两个项目之间的链接设置正确。
请注意,我每次都清理/重建项目以查看它是否真的有效,所以这不是 DLL 构建不正确的问题。
在 system.web -> pages -> controls 我添加的 Web Config 文件中:
<add assembly="SiteCI-classes" namespace="Controls" tagPrefix="custom" />
但是在我添加时在 ASP.Net 页面上:
<custom:MailLink runat="server" id="test1"></custom:MailLink>
我收到未知服务器标签“自定义:MailLink”错误。
为了检查我在输入 web 配置文件时是否出错,我尝试将 SiteCI-classes 更改为 SiteCI_classes,但我收到一条错误消息,说它无法加载程序集,所以我猜那部分没问题,然后我尝试更改*namespace="SiteCI_classes.Controls"*或namespace="SiteCI-classes.Controls"中的 namespace= "Controls "并没有解决未知的服务器标签问题。
我不知道该怎么办......它应该工作,不是吗?
这是 MailLink.vb,它位于Library 项目的Controls文件夹中。这是我在 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