经典ASP端口 - 如何替换#INCLUDE (.inc)文件

3
我们正在将一个经典的ASP应用程序移植到ASP.NET。那么我们该如何处理#INCLUDE(.inc)文件呢?现在它们会导致构建错误,因为ASP.NET认为变量“未声明”。

你使用哪个asp.net框架? - Mattias Jakobsson
目前还没有...我们最终希望逐渐转向MVC。 - JoelFan
你确定它们被声明了吗?在VBScript中,声明不是必需的... - Austin Salonen
不,它们没有被声明。它们在经典ASP中运行良好,但在ASP.NET中无法工作。 - JoelFan
我不认为.NET中有INCLUDE。我认为你要寻找的相同功能是将那些包含在文件中的方法重写到APP_CODE文件夹中,然后你可以在新页面中调用这些方法。除非我误解了问题... - Aaron
不,.net中没有INCLUDE语句。而且如果要尝试解释应该如何做,会花费相当长的时间,因为面向对象语言(如.net语言)与VBScript非常不同。我建议你尝试一下谷歌搜索并下载一些示例应用程序。因为没有“直接”的方法可以将asp 3应用程序移植到asp.net(任何框架),因为它们非常不同。如果你想使用asp.net mvc,那么就从一开始就开始使用它。否则,你几乎需要重新开始。 - Mattias Jakobsson
2个回答

2
您没有说明.inc文件中包含什么内容。让我们假设其中有一堆常量定义和一些辅助函数。
有几种变化您可以考虑。
1.通常有一个单独的.inc文件,该文件被包含在所有或大多数ASP页面中。 2.其他.inc文件被包含在一些ASP页面中,因为它们只是封装了一些共享功能。
对于变体1,创建一个从Page派生的类可能会有所帮助,该类将原始的.inc文件常量公开为属性,并将其函数公开为方法。让所有移植到ASP.NET的页面从这个新类继承,而不是直接从Page继承。
对于变体2,在App_Code中创建包含静态属性和方法的类(或VBScript类的直接端口,如果.inc包含这些)。使用这些包括的ASP到ASP.NET页面端口需要在原始的.inc文件成员的名称前缀上它们不是静态(共享)成员的类名。
如果包括最初包含静态标记,则更好的端口是创建代表性的.master页面,并使移植的ASP页面适当地使用这些主页面。

.inc文件包含了几乎所有内容:子程序声明;“全局”变量初始化(有时也包括声明);在包含时运行的代码,其中包括条件逻辑,检查会话变量并有条件地重定向和/或包含其他文件... - JoelFan
1
@JoelFan:代码量和额外的包含文件并不是问题,同样的原理适用。ASP.NET没有像ASP一样的词法include,这是不必要的。与ASP不同,ASP.NET可以通过将编译后的程序集添加到bin文件夹或将代码文件转储到app_code文件夹来访问外部文件中的代码。您还可以将类文件放置在App_Code文件夹中,您可以让页面继承这些文件。您还可以使用.master页面。您只需要根据最佳拟合情况将包含文件的内容分成这些不同的方法即可。 - AnthonyWJones
正是我所建议的:使用自定义基础页面类和主页面来实现常见功能和标记。 - Grant Palin

1

您可以像在ASP中一样进行移植:

 <!--#include virtual="/include/flash-check_inc.asp"-->

在ASP.NET中,那是做什么用的? - John Saunders
1
它将包括在虚拟目录/include/flash-check_inc.asp中的文件。它只是从经典asp移植过来,仍然可以在代码中使用。 - nrose101
你真的尝试过这个吗?如果这能够运行,我会非常惊讶。 - AnthonyWJones
我仍然有一些遗留代码已经使用了几年。 - nrose101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接