// field to hold reference to user control object private System.Web.UI.Control _innerUserControl; // instantiate user control in CreateChildControls protected override void CreateChildControls() { _innerUserControl = this.Page.LoadControl("/wpresources/WebUserControlMonth.ascx"); this.Controls.Add(_innerUserControl); } // render user control protected override void RenderWebPart(HtmlTextWriter output) { // output.Write(SPEncode.HtmlEncode(Text)); this.EnsureChildControls(); _innerUserControl.RenderControl(output); }
There is another solution by Barry Kouda regarding how to create a generic Web Parts for hosting ASP.Net User Control. It's really usefully to design web parts. The following contents show the main method of loading an ASP.NET user control into a Web Part and making it generic.
The approach involves using a shared Web Part property to track the name and path of the .ASCX file. Examine the following code:
// field to hold path to .ASCX file private string _path; // Web part property to make path configurable [ WebPartStorage(Storage.Personal), Category("Miscellaneous"), FriendlyName("User Control Path"), Description("Path to .ascx file"), Browsable(true), DefaultValue("") ] public string ControlFile { get { return _path; } set { _path = value; } } // field to hold reference to user control object Control uc; // instantiate user control in CreateChildControls protected override void CreateChildControls() { this.Controls.Clear(); uc = this.Page.LoadControl(_path); this.Controls.Add(uc); } // render user control protected override void RenderWebPart(HtmlTextWriter output) { uc.RenderControl(output); }Now, the file name and path to the .ASCX file are configurable. It’s possible for any SharePoint developer, Web designer or content manager to the UsercontrolHost web part to a web part page and configure the User Control File property through configuration functionality.