页与页之间如何共享代码

在页之间共享代码

尽管可以将代码放在站点的每个页上(使用上一节中所述的内联或代码隐藏分离模型),但有时您将希望在站点中的多个页之间共享代码。将这些代码复制到需要它们的每个页上,这种做法既低效又使代码难以维护。幸运的是,ASP.NET 提供了几种简单的方法,使应用程序中的所有页都可以访问代码。

代码目录 2.0 中的新增功能

与页可在运行时动态编译一样,任意代码文件(例如,.cs 或 .vb 文件)也可以在运行时动态编译。ASP.NET 2.0 引入了 App_Code 目录,该目录可以包含一些独立文件,这些文件包含要在应用程序中的多个页之间共享的代码。 与 ASP.NET 1.x 不同(1.x 需要将这些文件预编译到 Bin 目录),App_Code 目录中的所有代码文件都将在运行时动态编译,然后提供给应用程序。可以在 App_Code 目录下放置多种语言的文件,前提是将这些文件划分到各子目录中(在 Web.config 中用特定语言注册这些子目录)。下面的示例演示如何使用 App_Code 目录包含一个从页调用的类文件。

C# App_Code Folder Example
Run Sample View Source

默认情况下,App_Code 目录只能包含同一种语言的文件。但可以将 App_Code 目录划分为若干子目录(每个子目录包含同一语言的文件)以便可以在 App_Code 目录下包含多种语言。为此,需要在应用程序的 Web.config 文件中注册每个子目录。
<configuration>
  <system.web>
    <compilation>
      <codeSubDirectories>
        <add directoryName="Subdirectory"/>
      </codeSubDirectories>
    </compilation>
  </system.web>
</configuration>
下面的示例演示了一个经过划分以包含 VB 和 C# 语言文件的 App_Code 目录。

C# Partitioned App_Code Folder Example
Run Sample View Source

Bin 目录

在 ASP.NET 版本 1 中支持 Bin 目录,该目录类似于 Code 目录,不同的是它可以包含预编译的程序集。如果需要使用可能由其他人编写的代码,则此目录十分有用,您无需访问源代码(VB 或 C# 文件)就可以得到编译后的 DLL。只需将程序集放在 Bin 目录中,就可以在您的站点中使用它。默认情况下,Bin 目录中的所有程序集都自动加载到应用程序中,然后可供各页访问。您可能需要使用页最上方的 @Import 指令从 Bin 目录的程序集中导入特定的命名空间。
  <@ Import Namespace="MyCustomNamespace" >

全局程序集缓存

.NET Framework 2.0 提供了表示 Framework 的各个部件的大量程序集。这些程序集存储在全局程序集缓存中,该缓存是程序集的版本化存储库,可供计算机上的所有应用程序使用(而不像 Bin 和 App_Code 那样仅限于特定的应用程序)。Framework 中的多个程序集都可自动提供给 ASP.NET 应用程序。通过在应用程序的 Web.config 文件中注册,可以注册更多的程序集。
<configuration>
   <compilation>
      <assemblies>
         <add assembly="System.Data, Version=1.0.2411.0, 
                        Culture=neutral, 
                        PublicKeyToken=b77a5c561934e089"/>
      </assemblies>
   </compilation>
</configuration>
请注意,您仍需使用 @Import 指令使这些程序集中的命名空间可供各页使用。 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值