有没有办法将aspx文件放入Visual Studio 2008 .NET 3.5中的类库?

问题描述 投票:3回答:5

我在我的网站上有很多页面,我试图想出一个很好的方法将这些页面分成比我的基础Web项目下的简单目录更加孤立的区域。有没有办法将我的Web表单放入单独的类库中?如果是这样,它是如何完成的?

提前致谢。

c# .net asp.net .net-3.5
5个回答
3
投票

起初我认为,由于ASPX非预编译的方式,我认为这是不可能的。

但是,您可以创建从Page继承的类,并将它们放入DLL中以重用代码隐藏功能。这当然可以包括控制实例化逻辑(如果需要),但没有设计人员可以使用(如果需要)。


3
投票

我的问题是,你为什么要这样做?

如果它纯粹是组织的,那么你的“简单文件夹”应该足够了,所以也许你需要重新思考你的项目结构。

如果是出于编译目的,每次更改内容时重新编译网站需要很长时间,也许您可​​以将网站拆分为多个站点项目,每个项目都作为主站点的子域运行。

然后将分别重新编译这些。

如果它是一个组织的东西,但与管理有关,因为你有大量的代码,而且很难绕过,那么也许你应该评估你构建网站的方式。 N-Tier aproach或ASP.NET MVC会更好地分离您的代码吗?

你怎么看?...


3
投票

你也可以实现一个VirtualPathProvider。我已经看到这样做是为了从单个zip文件中提供文件,它们也可以从DLL中提取。


2
投票

这种方法的另一个困难是,如果不使用FindControl,您将无法直接访问在ASP.NET页面上创建的控件。

但是,一切都不会丢失。您可以选择使用ASP.NET Web应用程序项目,而不是使用ASP.NET网站。这使用ASP.NET 1.1功能,它允许您实质上预编译。

ASP.NET Web Application Project template in Visual Studio 2008 http://www.robpaveza.net/pub/aspnet-web-app.png

需要注意的是,虽然您将控件预编译到类中,但实际上您的页面上的内容实际上并不存储在DLL中。

另一种方法是使用网站发布向导,该向导在部署之前执行自动ASP.NET编译。但是,这会使一系列DLL无法使用;生成的内容对开发人员来说并没有多大意义(你会得到像ASP.my_homepage_aspx这样的类),这些类虽然可用,但会阻碍你的开发工作。


0
投票

我认为这是可能的,我已经在我的一个项目中完成了这个项目,其中aspx文件将被物理放置在类库中。在主项目的属性中有一个选项Build Events,你可以把它放在这样的东西上

if exist "$(TargetDir)WebForm1.aspx" move /Y "$(TargetDir)WebForm1.aspx" 
"$(ProjectDir)WebForm1.aspx"
© www.soinside.com 2019 - 2024. All rights reserved.