ASP.NET Controls - Part Two
page 3 of 5
by Devarticles.com
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 23749/ 40

Using a Custom Control

A good use of components is to turn functions contained within application logic code into reusable components. Let's have a look at an example of using a custom control. We will make a custom control that takes a parameter and displays that parameter in a large font. Start off by opening notepad and entering following code. Save the file as customc.cs.

using System;
using System.Web;
using System.Web.UI;

namespace devArticles
{
public class CustomC : Control
{
string tempText;

public string Text
{
get {return tempText;}
set {tempText = value;}
}

protected override void Render(HtmlTextWriter writer)
{
if (tempText == null)
{
tempText = "Default Text";
}
writer.Write ("<h1>" + tempText + "</h1>");
}
}
}

Open up another notepad window and save the following code as customc.aspx:

<%@ Register TagPrefix="devArticles" Namespace="devArticles" Assembly="CustomC"%>

<html>
<head>
<title>Code Behind Example
</head>
<body>
<devArticles:CustomC runat= "server" Text = "Title"/>

<devArticles:CustomC runat= "server" />
</body>
</html>

Using the command line, enter the following commands to compile our custom control:

md bin
csc /t:library /out:bin\customc.dll /r:System.dll,System.Web.Dll customc.cs

Let's take a look at the details of the code shown in the examples above.

public class CustomC : Control

public string Text
{
get {return tempText;}
set {tempText = value;}
}

We start by creating a class that is derived from the "Control" base class. Next, we have a public property named "Text". We can use the get and set accessor methods to modify and set the value of the string variable tempText variable, which exists in our class.

protected override void Render(HtmlTextWriter writer)

In the line above, we over ride the inherited method named Render. We declare the method as protected, because we don't want people to access if from outside of the control. The HtmlTextWriter is an object that we automatically receive from server. It allows us to output text to the web browser. In an aspx page, every tag is written to use this object when it is displayed.

if (tempText == null)
{
tempText = "Default Text";
}
writer.Write ("<h1>" + tempText + "</h1>");

The code above makes sure that the tempText value can never be empty. If it is empty (ie the get accessor of the Text property hasn’t been called), then it is set to "Default Text". Lastly, we use the Write method of our HtmlTextWriter object to output its value between a <h1> tag to the browser.

Let's now take a look at the aspx page:

<%@ Register TagPrefix ="devArticles" Namespace="devArticles" Assembly="CustomC"%>

We start off by registering a new user control, except we use the "Assembly" keyword instead of "TagName", and "Namespace" instead of the file location, because the server already knows where to search for the .dll files (in the /bin folder).

<devArticles:CustomC runat= "server" Text = "Title"/>
<devArticles:CustomC runat= "server" />

We have used the same custom control twice to show how that default value will be assigned if one isn't specified. The first tag explicitly specifies a value for our Text property, whereas the second one doesn't. Before this example will work, we have to compile it using the C# compiler:

csc /t:library /out:bin\customc.dll /r:System.dll,System.Web.Dll customc.cs

In our call to the C# compiler, we specify the output directory for our files, as well as the file names and namespace that we have used to create our files. Finally, we specify the name of our source code file.

When I ran this example in my web browser, it looked like this:

Testing our control in a browser - aspcn2_1.gif

And there we have it, our first custom control. Now that we can create and compile custom controls, let's take a look at components.


View Entire Article

User Comments

No comments posted yet.

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-24 7:14:00 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search