How to share ASP.NET pages and user controls between applications by using Visual C# .NET (324785)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework) 1.0
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft Visual C# .NET (2002)
- Microsoft Visual C# .NET (2003)
This article was previously published under Q324785 For a Microsoft Visual Basic .NET version of this
article, see
825996 How to share ASP.NET pages and user controls between applications by using Visual Basic .NET
SUMMARYThis step-by-step article describes how to share Microsoft ASP.NET
pages (.aspx files) and user controls (.ascx files) between applications by using Microsoft
Visual C# .NET. Requirements- Microsoft Windows 2000 Professional, Microsoft Windows 2000
Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows XP
Professional, or Windows Server 2003
- The Microsoft .NET Framework 1.0 or the Microsoft .NET Framework
1.1
- Microsoft Internet Information Services (IIS) 5.0 or
later
- Microsoft Visual Studio .NET
Develop the sample ASP.NET Web user controlCreate one ASP.NET application that contains the shared user
controls, and then create two other ASP.NET applications that incorporate the user control
that are developed in the first application. Create the ASP.NET Web application that contains the user control- Start Visual Studio .NET.
- On the File menu, point to
New, and then click Project.
- In the New Project dialog box, select Visual C# Projects under Project Types, and then select Empty Web Project under
Templates.
- In the Location box, replace the
WebApplication# default name with
MyUserControls. If you are using the local server, you can use the server name http://localhost. The
Location box appears as follows:
http://localhost/MyUserControls
Add a New user controlTo add a new Web user control to the
MyUserControls application that was created in the "Create the ASP.NET Web application that contains the user control" section, follow these steps: - In Solution Explorer, right-click
Project, point to Add, and then click
Add Web User Control.... Name the control as
TimeStamp.ascx, and then click Open.
The user control is displayed in the editor.
- Switch to HTML view in the editor, and then replace the
automatically generated template code with the following code:
<%@ Control Language="c#"%>
<script runat=server>
void Page_Load(object sender, System.EventArgs e)
{
CurrentTime.Text = System.DateTime.Now.ToLongTimeString();
}
</script>
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="200" border="1">
<TR>
<TD bgColor="gainsboro">
<P align="center">Current System Time</P>
</TD>
</TR>
<TR>
<TD>
<P align="center">
<asp:Label id="CurrentTime" runat="server"></asp:Label></P>
</TD>
</TR>
</TABLE>
Note In the earlier code sample, the AutoEventWireup attribute is not explicitly set. If the AutoEventWireup attribute
is not explicitly assigned a value, the default value is true. If you use Visual Studio .NET to develop your
applications, the default template code explicitly sets the
AutoEventWireup attribute value to false.
Important The difference between the default value that is used by ASP.NET itself and the value that the Visual
Studio .NET template code assigns to the attribute is subtle. If the AutoEventWireup
attribute value is set to false, the event handlers that are declared in the .aspx page are not
fired. This can be a source of confusion if you are not aware of this
functionality. - On the File menu, click Save
All.
- On the Build menu in the Visual Studio
.NET IDE, click Build
Solution.
Develop the sample applications to use the controlCreate the first sample application to implement the user control- Start Visual Studio .NET.
- On the File menu, point to
New, and then click Project.
- In the New Project dialog box, select
Visual C# Projects under Project Types, and then select ASP.NET Web Application under
Templates.
- In the Location box, replace the
WebApplication# default name with MySampleDemo1. If you
use the local server, you can use the server name
http://localhost. The Location box appears as
follows:
http://localhost/MySampleDemo1
Add a new Web form- In Solution Explorer, right-click
Project, point to Add, and then click
Add Web Form.....
- Name the Web form as
MyControlTester1.aspx, and then click
Open.
- Switch to HTML view in the editor, and then add the following
directive at the beginning of the page to refer the user control:
<%@ Register TagPrefix="uc1" TagName="TimeStamp" Src="DemoControls/TimeStamp.ascx" %> - Add the following line of code directly after the opening
<FORM> tag:
<uc1:TimeStamp id="TimeStamp1" runat="server"></uc1:TimeStamp>
- To add a reference to MyUserControls, right-click
References in Solution Explorer, and then click Add
Reference....
- Click the Projects tab, and then select the
MyUserControls project from the list of available projects.
- To add the reference, click Select, and then click
OK. Alternatively, you can also select
Browse, and then locate the assembly in the \bin directory
for the MyUserControls application.
- To save the Web form and the other associated project files, click Save
All on the File menu.
- On the Build menu in the Visual Studio
.NET IDE, click Build
Solution.
Create the second sample application to implement the user control- Start Visual Studio .NET.
- On the File menu, point to
New, and then click Project.
- In the New Project dialog box, select
Visual C# Projects under Project Types, and then select ASP.NET Web Application under
Templates.
- In the Location box, replace the WebApplication# default
name with MySampleDemo2. If you are using the local
server, then you can use the server name http://localhost.
The Location box appears as follows:
http://localhost/MySampleDemo2
Add a new Web form- In Solution Explorer, right-click
Project, point to Add, and then click
Add Web Form..... Name the Web form as
MyControlTester2.aspx, and then click
Open.
- Switch to HTML view in the editor, and then add the following
directive at the beginning of the page to refer the user control:
<%@ Register TagPrefix="uc1" TagName="TimeStamp" Src="DemoControls/TimeStamp.ascx" %> - Add the following line of code directly after the opening
<FORM> tag:
<uc1:TimeStamp id="TimeStamp1" runat="server"></uc1:TimeStamp> - To add a reference to MyUserControls, To do this, right-click References in Solution Explorer, and then click
Add Reference....
- Click the Projects tab, and then select
the MyUserControls project from the list of available
projects.
- To add the reference, click Select, and then click
OK. Alternatively, you can also select
Browse, and then locate the assembly in the \bin directory for
the MyUserControls application.
- To save the Web Form and other associated project files, click Save
All on the File menu.
- On the Build menu in the Visual Studio
.NET IDE, click Build
Solution.
Configure the virtual directories in IISIn the next series of steps, you create the related virtual
directories in IIS to map to the physical location of the application
that contains the user control. Follow these tasks for both
the MySampleDemo1 and the MySampleDemo2 applications. - Click Start, and then
click Run.
- In the Open box, type
inetmgr, and then click OK. Internet Information Services (IIS) Manager appears.
- In Internet Information Services (IIS) Manager, expand the root Web node, and then locate
the MySampleDemo1 virtual directory.
Right-click the virtual directory, point to New, and then
click Virtual Directory. Virtual Directory
Creation Wizard is displayed.
- Click Next.
- To create the alias for the virtual directory, type DemoControls, and then click
Next.
- To map the virtual directory with a physical directory,
click Browse, navigate to the
MyUserControls folder, and then click Next. By
default, the MyUserControls folder is located at DriveLetter:\Inetpub\wwwroot.
- Click Next to accept the default
settings, and then click Finish.
- Right-click the newly created
DemoControls virtual directory, and then click
Properties.
- On the Virtual Directory tab, click
Remove. The text on the button control switches to
"Create". The virtual directory mapping remains the same, but does not become an
application.
- Repeat steps 1-9 for the MySampleDemo2 virtual directory.
Verify that it works- Open Microsoft Internet Explorer, and then go to the URL for
MyControlTester1.aspx. For example, if you are developing on the local server,
then the URL is as follows:
http://localhost/MySampleDemo1/MyControlTester1.aspx You may see
the page with the results of the user control. - In Internet Explorer, go to the MyControlTester2.aspx file that is associated with the second demo
application. The URL will be as follows:
http://localhost/MySampleDemo2/MyControlTester2.aspx You may
see that the page is rendered together with the output from the user control,
because of the mapping scheme that you implemented in IIS.
TroubleshootWhile this technique works well, you must be aware of the
following issues before you decide to use it: REFERENCES
For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
306459 ASP.NET server controls overview
316370 BUG: Visual Studio .NET does not generate a code-behind declaration for Web User controls
For more information, visit the following
Web site:
Modification Type: | Minor | Last Reviewed: | 4/28/2006 |
---|
Keywords: | kbDeployment kbCtrlCreate kbWebForms kbHOWTOmaster KB324785 kbAudDeveloper |
---|
|