Re: ASP.NET 2.0 User Control that implements a template



Sure, I understand. The reason it doesn't work is that the ASCX is the concrete class that's being put on the page and it doesn't have the [ParseChildren(true)] attribute (since the class is gen'd form the ASCX) and all the other things like ControlDesigers that are necessary to make the deisgn mode work. If you just make your own class (in a .cs file) and don't use the ASCX you'll be able to put those attrribues on yourself. Check out "Developing Microsoft ASP.NET Server Controls and Components", by Nikhil Kothari and Vandana Datye from MS Press as it describes in detail all of what needs to be done to support the designer.

-Brock
DevelopMentor
http://staff.develop.com/ballen

Thank you for the response. I am only trying to implement an example
from MSDN

http://msdn.microsoft.com/library/en-us/cpguide/html/cpconCreatingTemp
latedUserControl.asp?frame=true

of course in the end I will implement something far more complex.

The issue is not the implementation but rather displaying the aspx
page in design mode.

"Brock Allen" wrote:

UserControls (ASCX files) aren't typically used this way. Usually a
Composite control is used. IOW, and IMO, you don't need the ASCX
portion of this control. In your CreateChildControls add a
LiteralControl with the <hr>, then add your content, then add another
LiteralControl with the last <hr>.

-Brock
DevelopMentor
http://staff.develop.com/ballen
I have created a user control in ASP.NET 2.0 that utilizes
ITemplate. The control has no issues (displays fine in a browser)
until I try to go into design mode on the aspx page that is
implementing the control. The aspx page says  "Can not switch views:
Content is not allowed between the openening and closing tags for
element 'Section'". I have include a simplified version of the
control and the implementation on the aspx page. Any insite into
enabling the user control for view in the design mode of an aspx
page would be greatly appreciated.

user control:
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="Section.ascx.cs"
Inherits="Common_FormSections_Section" %>
<hr />
<asp:PlaceHolder ID="contentholder"
runat="server"></asp:PlaceHolder>
<hr />
codebehind:
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Common_FormSections_Section :
System.Web.UI.UserControl {
protected override void CreateChildControls()
{
if (null != Header)
Content.InstantiateIn(contentholder);
}
protected void Page_Load(object sender, EventArgs e)
{
}
private ITemplate _contentTemplate = null;

[TemplateInstance(TemplateInstance.Single)]
public ITemplate Content
{
get
{
return _contentTemplate;
}
set
{
_contentTemplate = value;
}
}
}
aspx implimentation:
The register tag has been intentional excluded
<uc1:Section ID="Section1" runat="server">
<Content>
This is content
</Content>
</uc1:Section>

Thanks in advance



.



Relevant Pages