C# 在VisualStudio2008.NET3.5中,有没有办法将aspx文件放入类库?

C# 在VisualStudio2008.NET3.5中,有没有办法将aspx文件放入类库?,c#,.net,asp.net,.net-3.5,C#,.net,Asp.net,.net 3.5,我的站点中有很多页面,我正试图想出一种很好的方法,将这些页面划分为比我的基本web项目下的简单目录更为孤立的区域。有没有办法将我的web表单放入一个单独的类库?如果是,是如何做到的 提前感谢。乍一看,我认为这是不可能的,因为ASPX是非预编译的 但是,您可以创建继承自页面的类,并将它们放入DLL中,以重用代码隐藏功能。如果需要,这当然可以包括控件实例化逻辑,但是没有可使用的设计器(如果需要)。这种方法的另一个困难是,如果不使用,您将无法直接访问在ASP.NET页面上创建的控件 然而,一切都没有失

我的站点中有很多页面,我正试图想出一种很好的方法,将这些页面划分为比我的基本web项目下的简单目录更为孤立的区域。有没有办法将我的web表单放入一个单独的类库?如果是,是如何做到的


提前感谢。

乍一看,我认为这是不可能的,因为ASPX是非预编译的


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

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

然而,一切都没有失去。您可以选择使用ASP.NET Web应用程序项目,而不是使用ASP.NET网站。这使用ASP.NET 1.1功能,它允许您基本上预编译

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


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

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

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

如果是出于编译目的,比如每次更改某个内容都要花费很长时间重新编译站点,那么您可以将站点拆分为多个站点项目,每个项目都作为主站点的子域运行

然后将分别重新编译这些文件

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


您认为呢?…

您还可以实现一个。我见过这样做是为了从单个zip提供文件,它们也可以从DLL中提取。

我认为这是可能的,我在我的一个项目中这样做过,其中aspx文件将物理地放置在类库中。在主项目的属性中有一个选项buildevents,您可以在其中放置类似的内容

if exist "$(TargetDir)WebForm1.aspx" move /Y "$(TargetDir)WebForm1.aspx" 
"$(ProjectDir)WebForm1.aspx"

我们的应用程序分为多个子模块。每个模块的业务逻辑都绑定到一个库中,因此我们希望与之关联的视图层具有相同的功能。我们正在使用ASP.NETMVC和区域。虽然模块完全分离会更干净。谢谢你的想法。ASPX未预编译是我在ASP.NET中遇到的最大问题。我意识到这是一篇老文章。我只是想说这是可以做到的。尽管如此,ASP.Net并不打算以这种方式工作。您必须使用aspnetcompiler和aspnetmerge预编译您的网站(或库),然后它会将您的所有UI嵌入到dll中。这是缓慢的,也是痛苦的,但可以做到。