此问题已被问过几十次;但从未解决过。
我有一个 UpdatePanel
<asp:UpdatePanel ID="UpdatePanelSetupToolbar" runat="server">
<ContentTemplate>
...
</ContentTemplate>
</asp:UpdatePanel>
但Visual Studio中的可视化页面设计器(2010(专业版(Windows(7(专业版(64位)))))会出错:
创建控件时出错 - UpdatePanelSetupToolbar
类型'System.Web.UI.UserControl'没有名为'ContentTemplate'的公共属性。
编辑:漂亮的截图中添加漂亮的颜色以获得更好的效果
现在,严格地说,这是真的:UserControl
不有一个名为ContentTemplate
的公共属性。
幸运的是,我的UpdatePanel
是 UpdatePanel
,而确实有一个名为'ContentTemplate'
的公共属性。
那么我如何说服Visual Studio我的UpdatePanel
是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>
ToolbarSetup
UpdatePanelSetupToolbar
控件那么与
有什么关系类型'%s'没有名为'%s'的公共属性。
ASP.net网站编译,构建并运行精细。这只是抱怨的Visual Studio(2010)设计师。
那么与Type '%s' does not have a public property named '%s'.
的交易是什么?
这个问题是正在进行的Stackoverflow系列中的一个,“模板化用户控件”:
答案 0 :(得分:1)
更新面板非常酷,但你真的无法使用它进行用户控制。好消息是你可以通过遵循用于制作ajaxcontroltoolkit更新面板的相同设计模式来制作具有javascript有效负载的asp.net用户控件。
我在2009年3月建立了这个,因为我需要一个没有阻止ui的消息框。我使用ajaxcontroltoolkit跟踪usercontrols的设计模式。它有完整的源代码,VS intelisense可以在javascript上运行。这是一个用户控件,你只是放在页面上,它带有它自己的javascript有效负载,你可以ajaxify你的心脏内容。它甚至可以在没有修改的数据中继器中工作。它实际上被接受为asp.net网站上的ajaxcontroltoolkit用户控件。
如果你愿意,你可以将它放在github或其他存储库上。
答案 1 :(得分:0)
你应该按照设计解决这个问题。
将更新面板放在页面上,并在没有更新面板的情况下进行用户控制。
原因:更新面板旨在为您确实知道的异步回发自动生成客户端脚本。 用户控件是一个构建块,其中包含一个独立的功能,封装了复杂性,应该可以放置在任何地方而不需要上下文,在这种情况下,至少你需要在页面上实例化控件的脚本管理器。