Both the UserControl class and the Page class derive from the base TemplateControl class.
Custom control is stored in the file with .ascx extension.
You cannot request this file directly from a web browser.
Before using a web User control, you must register it.
<%@ Register %> directive contains the three attributes:
TagPrefix: namespace. You can use any string that you want.
TagName: name that you want to associate with the User control.
Src: virtual path to the User control (the path to the .ascx file).
File: Control.ascx
<%@ Control Language="C#" ClassName="RandomImage" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
void Page_Load()
{
string imageToDisplay = GetRandomImage();
imgRandom.ImageUrl = Path.Combine("~/Images", imageToDisplay);
lblRandom.Text = imageToDisplay;
}
private string GetRandomImage()
{
Random rnd = new Random();
string[] images = Directory.GetFiles(MapPath("~/Images"), "*.jpg");
string imageToDisplay = images[rnd.Next(images.Length)];
return Path.GetFileName(imageToDisplay);
}
</script>
<asp:Image
id="imgRandom"
Width="300px"
Runat="server" />
<br />
<asp:Label
id="lblRandom"
Runat="server" />
File: ShowRandomImage.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="user" TagName="RandomImage" Src="~/Control.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show RandomImage</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<user:RandomImage
ID="RandomImage1"
Runat="server" />
</div>
</form>
</body>
</html>