10

这个问题之前已经被问过几十次了;但一直没有解决。

我有一个UpdatePanel

<asp:UpdatePanel ID="UpdatePanelSetupToolbar" runat="server">
   <ContentTemplate>
      ...           
   </ContentTemplate>
</asp:UpdatePanel>      

但是Visual Studio (2010 (Professional (Windows (7 (Professional (64-bit))))) 中的可视化页面设计器给出了错误:

创建控件时出错- UpdatePanelSetupToolbar

类型“System.Web.UI.UserControl”没有名为“ContentTemplate”的公共属性。

在此处输入图像描述
编辑:在漂亮的屏幕截图中添加漂亮的颜色以获得漂亮的效果

现在,严格来说,这是真的UserControl没有名为.ContentTemplate

幸运的是 myUpdatePanel是一个UpdatePanel,并且它确实有一个名为 的公共属性'ContentTemplate'

那么我如何让 Visual Studio 相信 myUpdatePanel是一个UpdatePanel?

重要的附加说明

上面的代码实际上并没有按原样失败:

<asp:UpdatePanel ID="UpdatePanelSetupToolbar" runat="server">
   <ContentTemplate>
      ...           
   </ContentTemplate>
</asp:UpdatePanel>  

...只有当我在ContentTemplate中有内容时它才会失败:

    <asp:UpdatePanel ID="UpdatePanelSetupToolbar" runat="server">
        <ContentTemplate>
            <Vista:Toolbar ID="ToolbarSetup" runat="server">
                <ContentTemplate>
                    <asp:LinkButton ID="bbSetupDays" ToolTip="Specify how many allocations will be available on these selected days"
                    OnClick="bbSetupDays_Click"                                        
                    runat="server">Setup Selected Days</asp:LinkButton>         
                </ContentTemplate>
            </Vista:Toolbar>        
        </ContentTemplate>
    </asp:UpdatePanel>      
  • 但 Visual Studio 并没有抱怨内部ToolbarSetup
  • 它在抱怨外部UpdatePanelSetupToolbar控制

那么有什么关系

类型“%s”没有名为“%s”的公共属性。

?

不重要的附加说明

ASP.net 网站编译、构建和运行良好。抱怨的只是 Visual Studio (2010) 设计师。

那么有什么关系Type '%s' does not have a public property named '%s'.呢?

系列

这个问题是正在进行的 Stackoverflow 系列“模板化用户控件”中的一个:

4

2 回答 2

1

更新面板真的很酷,但你真的不能用它来控制用户。好消息是您可以按照用于为 ajaxcontroltoolkit 制作更新面板的相同设计模式制作具有 javascript 有效负载的 asp.net 用户控件。

我在 2009 年 3 月构建了这个,因为我需要一个不会阻止用户界面的消息框。我使用 ajaxcontroltoolkit 遵循了用户控件的设计模式。它具有完整的源代码,并且 VS intelisense 可以在 javascript 上运行。这是一个用户控件,您只需放在页面上,它带有自己的 javascript 有效负载,您可以将其 ajaxify 到您心中的内容。它甚至可以在没有修改的数据中继器中工作。它实际上在 asp.net 网站上被接受为 ajaxcontroltoolkit 用户控件。

它是免费的,如果需要,您可以将其放在 github 或其他存储库中。

http://gosylvester.com/downloads/messagebox.aspx

http://gosylvester.com/blog.aspx?id=55

于 2013-11-06T15:27:21.377 回答
0

您应该根据设计解决此问题。

将您的更新面板放在一个页面上,让用户在没有更新面板的情况下进行控制。

原因:更新面板旨在为异步回发自动生成客户端脚本,您肯定知道。用户控件是一个构建块,具有封装复杂性的自包含功能,它应该可以放置在任何地方,而不需要上下文,在这种情况下,至少您需要在页面上实例化控件的脚本管理器。

于 2013-11-05T12:24:53.030 回答