Re: ASP.NET 2.0 User Control that implements a template
- From: Brock Allen <ballen@xxxxxxxxxxxxxxxxx>
- Date: Sat, 19 Nov 2005 09:40:31 -0800
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/ballenI 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
.
- References:
- Prev by Date: Re: Dynamically adding custom control
- Next by Date: RE: Object of type 'System.String' cannot be converted to type 'Sy
- Previous by thread: Re: ASP.NET 2.0 User Control that implements a template
- Index(es):
Relevant Pages
|