1

我有一组 aspx 页面,每个页面都位于自己的目录中,并引用单个 aspx.cs 代码隐藏文件。

这以前工作得很好,因为我从未尝试过预编译该站点。IIS 必须单独编译每个 aspx,将它们链接到 App_Code 的内容,但一次不能引用多个 aspx。

现在我正在尝试使用 Web 部署项目预编译网站,我不断收到有关在多个程序集中发现同一类的错误。

我不能只在 App_Code 中删除 aspx.cs 并将其子类化,因为它在编译时无法在 .aspx 页面上找到控件。也许我可以在 .cs 中明确定义页面上的每个控件?但这会让它们正确连接吗?

关于如何从多个 .aspx 页面引用同一个 Page 类并能够预编译整个网站的任何其他想法?

编辑: 看起来 CodeFileBaseClass 可能是我想要的。我将把我的 .cs 放到 App_Code 中,明确定义我的所有页面控件,然后在从它继承的 aspx 文件中将此类指定为 CodeFileBaseClass。想法?

Edit2: 我想出了一个解决方案,但由于我还不能将其标记为已接受,我仍然想看看是否有其他人可以为这个问题想出一些其他的解决方案。

4

2 回答 2

2

解决方案是:

  1. 获取我的 .aspx.cs 并将其复制到 App_Code 中并使用新的类名 ( FooPage)
  2. 修改FooPage以显式声明它引用的所有服务器端控件。
  3. 现在对于引用原始 .aspx.cs 的每个 .aspx 文件:
    1. 为它们创建一个 .aspx.cs 文件。
    2. .aspx.cs 中的类将继承自我移入 App_Code 的类
    3. CodeFileBaseClass="Namespace.To.FooPage"在 .aspx 中设置

这允许 ASP.net 轻松地将 .aspx 中的所有服务器端控件连接到基类的受保护成员。

现在我的代码中每个类只有 1 个,并且可以预编译整个站点!

于 2010-04-10T00:49:13.753 回答
0

我认为您将无法使用此框架执行预编译。

您可能想要构建一个执行所需功能的用户控件,然后您可以根据需要将其包含在各个页面上。

于 2010-04-09T03:54:17.810 回答