65.9K
CodeProject 正在变化。 阅读更多。
Home

在 MS VS 2005 中将 Web 用户控件转换为自定义控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.74/5 (23投票s)

2007年10月8日

CPOL

5分钟阅读

viewsIcon

93001

downloadIcon

687

在 MS VS 2005 中将 Web 用户控件转换为自定义控件

Title:       Convert the web user controls into custom controls in MS VS 2005
Author:      Dimitar Nikolaev Madjarov
Email:       madjarov_d_n@yahoo.com

引言

所有 Dot.Net 开发人员,无论是早晚,他们的 Web 用户界面工作都必须开发 Web 用户控件或自定义
Web 控件以满足现代基于 Web 的系统的复杂性。每个开发人员都知道这有多困难。
与教科书不同,在软件开发过程的真实世界中,我们开发的控件会随着任何新需求和最终用户功能而变得更加精致
和更复杂。
如果我们选择开发 Web 用户控件,我们就会选择使用 MS Visual Studio 的设计器。通过这种方式,当我们使用
MS VS 2005 的设计器时,我们肯定会提高开发人员的生产力和最终用户控件的质量。
此外,当我们使用 MS VS 2005 的设计器功能时,我们还能提高质量,因为对于每个开发人员来说,
测试和实时查看结果和控件行为都非常容易。这种可能性使开发人员能够更好地
自测其代码并尽早修复潜在的错误。Web 用户控件有一个很大的缺点。
它们不容易在大型项目或在其他独立项目中分发。它们很难封装。
本文的唯一目的是为所有使用 MS VS 2005 和 Dot.Net v.2 的开发人员提供一种可能性,以开发
Web 用户控件并将其转换为易于分发和封装的自定义 Web 控件。

让我们开始吧

我将逐步解释开发两个简单 Web 用户控件的整个过程,将它们作为用户控件进行测试
将它们转换为自定义控件并在独立的 Web 项目中使用它们。

1. 在当前文章下载文件中,您可以找到文件“WebDeploymentSetup.msi”。您必须将其作为 MS VS 2005 的插件安装。
此文件也可以在 Microsoft 网站上找到并从那里下载。此文件使 MS VS 2005 能够创建
更复杂的部署 Web 项目。
2. 完成第一步的安装后,打开 Visual Studio 2005 并创建一个简单的 Web 项目。将 Default.aspx 页面设置为起始页。
3. 现在是创建两个简单用户控件的时候了。在演示下载中,我创建了 testUC1 和 testUC2。
默认情况下,MS VS 2005 将创建一个 ASCX 文件,其中包含以下声明

Control Language="C#" AutoEventWireup="true" CodeBehind="testUC1.ascx.cs" Inherits="testUserControlsWebProject.testUC1"

以及关于第二个 Web 用户控件的相同声明
Control Language="C#" AutoEventWireup="true" CodeBehind="testUC2.ascx.cs" Inherits="testUserControlsWebProject.testUC2"

请注意红色部分。为了达到我们的目的,我们必须删除它们并用 ClassName 部分替换它们,如下所示。
Control Language="C#" AutoEventWireup="true" CodeBehind="testUC1.ascx.cs" ClassName="DNM.testUC1"

Control Language="C#" AutoEventWireup="true" CodeBehind="testUC1.ascx.cs" ClassName="DNM.testUC2"

这里我在 Web 控件名称前设置了“DNM”。在 Dot.Net 2 中修改类名是一个新功能
我这样做是因为类名必须保留在我们控件的命名空间中,并带有适合我们的名称。
在我们的示例中,我选择了“DNM”,但您可以自由设置任何您希望在控件中看到的名称。

4. 现在是时候将一些内容放入您的控件并在 ASPX 页面 /Default.aspx/ 中进行测试,以查看它们是否正常工作。

5. 在测试我们的 Web 用户控件并确认它们按预期工作后,是时候将它们转换为自定义控件了。
首先,我们必须添加一个 Web 部署项目。
请注意图 1 和图 2。

图 1 图 1

图 2 图 2

6. 我们的转换过程的下一步是使用正确的设置来设置我们的部署项目。
在“编译”项中,我们必须取消选中选项:“允许更新此预编译网站”。
我这样做是因为在更新模式下,只有代码隐藏文件会被编译。ASCX 将被保留。
因为我们的目标是重新分发我们的 DLL/程序集,为此,我们的 DLL 必须是自包含的。
在“输出程序集”项中,我们必须选中选项:“为每个页面和控件输出创建一个单独的程序集”。
最后,在“部署”项中,我们必须选中选项:“从输出位置删除 App_Data 文件夹”。
所有这些操作都显示在图 3、4 和 5 中。

图 3 图 3

图 4 图 4

图 5 图 5

7. 现在,在此步骤中,我们已准备好构建整个解决方案并生成我们的程序集。
在 Web 部署项目的 bin 文件夹中,您可能会找到我们的程序集“App_Web_testuc1.ascx.cdcab7d2.dll”和“App_Web_testuc2.ascx.cdcab7d2.dll”。
这些程序集正是我们的可再分发 DLL。我们的自定义控件。
8. 我们即将结束本文。我们现在必须创建一个独立的 Web 应用程序项目,该项目必须使用和消耗我们转换后的
用户控件。创建一个普通的 Web 项目并引用上面的 DLL。
9. 现在最后一步是在 ASPX 页面中手动注册添加的程序集,我们希望在其中使用我们转换后的控件。这是一个非常简单的步骤
此操作的代码如下所示:
 注册 Assembly="App_Web_testuc1.ascx.cdcab7d2" TagPrefix="T1" Namespace="DNM" 注册 Assembly="App_Web_testuc2.ascx.cdcab7d2" TagPrefix="T2" Namespace="DNM" 

请注意此片段 Namespace="DNM"。这里我使用了我在我们的 Web 控件中设置的精确命名空间。
10. 最后一步是在我们的 ASPX 页面中注册这两个控件并开始使用它们。为此,我使用以下代码:
 T1:testUC1 id="mitkoTestControl1" runat="server" /> T2:testUC2 id="mitkoTestControl2" runat="server" /> 

我们可以运行我们的项目并开始将我们转换后的控件作为常规自定义控件使用。

注意:请注意

因为我们开发了自包含的控件/独立的分布式 DLL/,所以它不依赖于应用程序的全局内容,如 App_Code 或 global.asax。
我们还必须使用静态图像和资源。我们的控件允许依赖于其他程序集,但它们
也必须在使用我们转换后的控件的 Web 项目的 bin 文件夹中可用。

致谢

我要向 Tenrox Inc. 的所有员工表示“非常感谢”。你们是我共事过的最优秀的专业人士之一。
我要向 Tenrox Inc. 公司表示感谢,感谢他们努力提供非常有趣且具有挑战性的 Web 项目,这些项目帮助我
成为更好的开发人员

© . All rights reserved.