【问题标题】:Cannot add property to INamingContainer in Web User Control无法在 Web 用户控件中向 INamingContainer 添加属性
【发布时间】:2012-09-16 09:33:19
【问题描述】:

我拥有的代码 (如下) 可以工作,除非我将 ref="abc" 添加到 TemplateItem 标记。当包含它时,我收到此错误:

属性“TemplateItem”没有名为“ref”的属性

我该如何解决这个问题?

默认.aspx

<%@ Register Src="~/message.ascx" TagName="Message" TagPrefix="uc" %>

<uc:Message ID="msg" runat="server" abc="123" >
    <TemplateItem ref="abc">Hi</TemplateItem>
</uc:Message>

message.ascx

<asp:placeholder runat="server" id="PlaceHolder1" />

message.ascx.vb

Partial Class message
Inherits System.Web.UI.UserControl

    Public Property abc() As String

    Sub Page_Init()
        If TemplateItem IsNot Nothing Then
            TemplateItem.InstantiateIn(PlaceHolder1)
        End If
    End Sub

    Private m_TemplateItem As ITemplate = Nothing

    <TemplateContainer(GetType(TemplateItem2))> _
    Public Property TemplateItem() As ITemplate
        Get
            Return m_TemplateItem
        End Get
        Set(ByVal value As ITemplate)
            m_TemplateItem = value
        End Set
    End Property

    Public Class TemplateItem2
        Inherits Control
        Implements INamingContainer

        Public Property ref() As String
    End Class

End Class

【问题讨论】:

    标签: asp.net vb.net user-controls


    【解决方案1】:

    你确定应该是:

    Public Class TemplateItem2 
    

    在底部,不只是以下?:

    Public Class TemplateItem
    

    (如果您只是想要与属性不同的名称,也许像TemplateItemImplementation 或只是TemplateItemImpl 这样会更清楚?)

    另外,我不确定这是如何工作的:

        TemplateItem.InstantiateIn(PlaceHolder1)
    

    MSDN page on CompiledTemplate.InstantiateIn() 说:此 API 支持 .NET Framework 基础架构,不打算直接从您的代码中使用。我想这是一个旁注,我假设你已经让它按照你想要的方式工作了......

    我认为问题与该行中TemplateItem 的实例化有关;我看不出TemplateItem2(包含属性ref())与ITemplateItem 的关系。也许你只需要让TemplateItem2也实现ITemplateItem

    如果可能的话,另一件要尝试的事情是使ref() 成为ITemplateItem 的属性。也许那个接口变成了&lt;TemplateItem /&gt;的类型,这可以解释为什么它不包含属性Ref?。

    (假设类型由属性TemplateItem()的返回类型指定)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多