UserControl does not have public property named Co

2020-02-05 17:36发布

This question has been asked a few dozen times before; but has never been solved.

i have an UpdatePanel

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

But the visual page designer in Visual Studio (2010 (Professional (Windows (7 (Professional (64-bit)))))) gives the error:

Error Creating Control - UpdatePanelSetupToolbar

Type 'System.Web.UI.UserControl' does not have a public property named 'ContentTemplate'.

enter image description here
Edit: pretty colors in pretty screenshots are added for pretty effect

Now, strictly speaking, that is true: UserControl does not have a public property called ContentTemplate.

Fortunately my UpdatePanel is an UpdatePanel, and it does have a public property named 'ContentTemplate'.

So how do i convince Visual Studio that my UpdatePanel is an UpdatePanel?

Important additional notes

The code above doesn't actually fail as is:

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

It only fails when i have content inside the ... 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>      
  • but Visual Studio is not complaining about inner ToolbarSetup
  • it's complaining about the outer UpdatePanelSetupToolbar control

So what's the deal with

Type '%s' does not have a public property named '%s'.

?

Unimportant additional notes

The ASP.net web-site compiles, builds, and runs fine. It's just the Visual Studio (2010) designer that complains.

So what's the deal with Type '%s' does not have a public property named '%s'.?

Series

This question is one in the ongoing Stackoverflow series, "Templating user controls":

2条回答
唯我独甜
2楼-- · 2020-02-05 18:02

The update panel is really cool but you really can't make user controls with it. The good news is you can make asp.net user controls that have a javascript payload by following the same design pattern used to make the updatepanel for the ajaxcontroltoolkit.

I built this back in Mar 2009 because I needed a message box that didn't block the ui. I followed the design pattern for usercontrols using the ajaxcontroltoolkit. It has complete source and the VS intelisense works on the javascript. It's a usercontrol that you just drop on the page and it carries it's own javascript payload that you can ajaxify to your hearts content. It even works in a data repeater with no modifications. It was actually accepted as a ajaxcontroltoolkit usercontrol on the website asp.net.

It's free you could put it on github or other repository if you wanted.

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

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

查看更多
劳资没心,怎么记你
3楼-- · 2020-02-05 18:10

You should solve this per design.

Put your update panel on a page and make the user control without an update panel.

reason: the update panel is intended to autogenerate clientside scripting for asyncronous postback as you surely know. The user control is a building block with a self contained functionality encapsulating complexity which should be placeable anywhere without requirements to the context and in this case at least you would need a scriptmanager on the page which instantiates the control.

查看更多
登录 后发表回答