<asp:Label id="label1" runat="server"/>
<br><br>
<asp:button id="button1" text="Hit" OnClick="button1_Click" runat="server" />
directive.
<html>
<body>
<form runat="server">
<UC:TestControl id="Test1" runat="server"/>
</form>
</body>
</html>
How to create an instance of a user control programmatically in the code behind file
of a Web Forms page
The previous example instantiated a user control declaratively in a Web Forms page using the
@ Register directive. However, you can instantiate a user control dynamically and add it to the page.
Here are the steps for doing that:
- Create a new Web Forms page in Visual Studio.
- Navigate to the code behind file generated for this Web Forms page.
- In the Page_Load event of the Page class, write the following code.
// Load the control by calling LoadControl on the page class.
Control c1 = LoadControl("test.ascx");
// Add the loaded control in the page controls collection.
Page.Controls.Add(c1);
Note You can add a user control dynamically at certain events of the page life cycle.
How a user control is processed
When a page with a user control is requested, the following occurs:
- The page parser parses the .ascx file specified in the Src attribute in the @ Register
directive and generates a class that derives from the
System.Web.UI.UserControl class.
- The parser then dynamically compiles the class into an assembly.
- If you are using Visual Studio, then at design time only, Visual Studio creates a code
behind file for the user control, and the file is precompiled by the designer itself.
- Finally, the class for the user control, which is generated through the process of dynamic
code generation and compilation, includes the code for the code behind file (.ascx.cs)
as well as the code written inside the .ascx file.
What are custom controls?
Custom controls are compiled code components that execute on the server, expose the object model,
and render markup text, such as HTML or XML, as a normal Web Form or user control does.
How to choose the base class for your custom control
To write a custom control, you should directly or indirectly derive the new class from the
System.Web.UI.Control class or from the
System.Web.UI.WebControls.WebControl class:
- You should derive from System.Web.UI.Control if you want the control to render nonvisual
elements. For example, <meta> and <head> are examples of nonvisual rendering.
- You should derive from System.Web.UI.WebControls.WebControl if you want the control
to render HTML that generates a visual interface on the client computer.
If you want to change the functionality of existing controls, such as a button or label, you can directly
derive the new class with these existing classes and can change their default behavior.
In brief, the
Control class provides the basic functionality by which you can place it in the control
tree for a
Page class. The
WebControl class adds the functionality to the base
Control class for
displaying visual content on the client computer. For example, you can use the
WebControl class
to control the look and styles through properties like font, color, and height.
How to create and use a simple custom control that extends from System.Web.UI.Control using
Visual Studio
- Start Visual Studio.
- Create a class library project, and give it a name, for example, CustomServerControlsLib.
- Add a source file to the project, for example, SimpleServerControl.cs.
- Include the reference of the System.Web namespace in the references section.
- Check whether the following namespaces are included in the SimpleServerControl.cs file.
System
System.Collections
System.ComponentModel
System.Data
System.Web
System.Web.SessionState
System.Web.UI
System.Web.UI.WebControls
- Inherit the SimpleServerControls class with the Control base class.
public class SimpleServerControl : Control
- Override the Render method to write the output to the output stream.
protected override void Render(HtmlTextWriter writer)
{
writer.Write("Hello World from custom control");
}
Note The HtmlTextWriter class has the functionality of writing HTML to a text stream.
- The Write method of the HtmlTextWriter class outputs the specified text to the HTTP response stream and is the same as the Response.Write method.
- Compile the class library project. It will generate the DLL output.
- Open an existing or create a new ASP.NET Web application project.
- Add a Web Forms page where the custom control can be used.
- Add a reference to the class library in the references section of the ASP.NET project.
- Register the custom control on the Web Forms page.
<%@ Register TagPrefix="CC " Namespace=" CustomServerControlsLib " Assembly="CustomServerControlsLib " %>
- To instantiate or use the custom control on the Web Forms page, add the following line of code in the <form> tags.
<form id="Form1" method="post" runat="server">
<CC:SimpleServerControl id="ctlSimpleControl" runat="server">
</CC:SimpleServerControl >
</form>
Note In this code, SimpleServerControl is the control class name inside the class library.
- Run the Web Forms page, and you will see the output from the custom control.
What are the basic differences between user controls and custom controls?
Now that you have a basic idea of what user controls and custom controls are and how to create them, let's take a quick look at the differences between the two.
| Factors | User control | Custom control |
| Deployment | Designed for single-application scenarios
Deployed in the source form (.ascx) along with the source code of the application
If the same control needs to be used in more than one application, it introduces redundancy and maintenance problems | Designed so that it can be used by more than one application
Deployed either in the application's Bin directory or in the global assembly cache
Distributed easily and without problems associated with redundancy and maintenance |
| Creation | Creation is similar to the way Web Forms pages are created; well-suited for rapid application development (RAD) | Writing involves lots of code because there is no designer support |
| Content | A much better choice when you need static content within a fixed layout, for example, when you make headers and footers | More suited for when an application requires dynamic content to be displayed; can be reused across an application, for example, for a data bound table control with dynamic rows |
| Design | Writing doesn't require much application designing because they are authored at design time and mostly contain static data | Writing from scratch requires a good understanding of the control's life cycle and the order in which events execute, which is normally taken care of in user controls |
Thank you! Your feedback is used to help us improve our support content. For more assistance options, please visit the
Help and Support Home Page.
No comments:
Post a Comment