2011-07-26 82 views
1

我有以下標記錯誤在設計模式

<table> 
    <tr> 
     <td> 
      <h1> 
       <%= this.Title %></h1> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <h2> 
       Footer</h2> 
     </td> 
    </tr> 
</table> 

代碼後面的Web用戶控件的Web用戶控制用了Itemplate:

[ParseChildren(true, "Content"), PersistChildren(true)] 
public partial class WebUserControl1 : System.Web.UI.UserControl 
{ 
    public string Title { get; set; } 

    [PersistenceMode(PersistenceMode.InnerDefaultProperty), 
    TemplateContainer(typeof(ContentContainer)), 
    TemplateInstance(TemplateInstance.Single), 
    DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]   
    public ITemplate Content { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     PlaceHolder1.Controls.Clear(); 
     var container = new ContentContainer(); 

     this.Content.InstantiateIn(container); 
     PlaceHolder1.Controls.Add(container); 
    } 
} 

public class ContentContainer : Control, INamingContainer 
{ 
} 

,並使用在頁面類似下面的

<%@ Register Src="WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc1" %> 
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" Title="The Title"> 
    <Content> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></Content> 
</uc1:WebUserControl1> 

當我運行該頁面時,它執行得很好。當我在設計模式下查看頁面時,出現以下錯誤:

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

我該如何解決此問題?

編輯:我修改了代碼

回答

3

從MSDN How to: Create Templated ASP.NET User Controls

Note: Templated ASP.NET user controls are not supported in the Visual Studio designer. However, you can compile and run this example in Visual Studio. To do so, when you create ASP.NET pages to test this code, replace all the designer-generated code in the pages with the code and markup in the example listings.

0

您需要解析兒童屬性添加到您的用戶控件類如下。

ParseChildren(true, "Content") 
public partial class WebUserControl1 : System.Web.UI.UserControl 

這意味着,在ContentProvider控制,其內部的控制將是 解析並加入到其子屬性。在設計時,他們將持續作爲其子控制的 。 查看詳情link

+0

'ParseChildren(真正的 「內容」)'沒有工作 –

+0

怎麼樣[ParseChildren(真, 「內容」),PersistChildren(真)]。您可能必須關閉該頁面並重新打開該頁面才能解決任何緩存問題。你看過我鏈接的文章嗎?它解決了這種設計師問題。 –

+0

也嘗試將內容的持久性模式設置爲PersistenceMode(PersistenceMode.InnerDefaultProperty) –