经典 ASP 到 ASP.NET 2.0 的转换

Posted

技术标签:

【中文标题】经典 ASP 到 ASP.NET 2.0 的转换【英文标题】:Classic ASP to ASP.NET 2.0 conversion 【发布时间】:2010-09-01 15:28:34 【问题描述】:

我可以就将经典的 asp 网站转换为 asp.net 提供一些一般性建议吗?我以前从未使用过经典的 asp,并且在过去 6 个月左右只使用过 asp.net 2.0,所以这对我来说是全新的。

我注意到我正在使用的这个网站使用了一些“包含”文件。我知道我可能应该从包含文件中获取代码并将它们复制到他们自己的类文件中。我注意到文件后面没有代码,每个页面都写在它自己的文件中(标记和代码)。另外,这有点让我失望,没有事件处理程序。您还可以提及经典和 .NET 之间的任何其他有用的细微差别吗?

还有一个问题:我注意到在我的项目中的每个文件中,有一些代码写在标记之上,还有一些写在标记之下。出于组织/可读性的目的,如果所有代码都写在标记之上或之下,似乎会更好。除非,这是有原因的。 ???

谢谢。

【问题讨论】:

任何您不能直接迁移到 3.5 或 4.0 的原因 - 这样您就不需要很快再次转换;) 我们只在工作中使用 2.0。 同样令人困惑的是,.NET 框架并不完全与 ASP.NET 版本绑定。 ASP.NET 2.0 适用于 .NET 2.0、3.0 和 3.5,而 ASP.NET 4.0 适用于 .NET 4.0 - 您可以使用 IIS 中的应用程序池进行检查 - 仅列出了 2.0 和 4.0。注意:有 1.0 和 1.1,但它们太旧了,现在不值得担心。 【参考方案1】:

您肯定面临着挑战。就比较而言,MVC 可能更接近于经典 ASP,因为它不会尝试将 Web 抽象为基于事件的结构 - 但这只是你要学习的另一件事。

如您所见,经典 ASP 与 ASP.NET 完全不同。基本上每个 URL 都解析为一个父 ASP 文件。这反过来又包括其他 ASP 文件(如果开发人员愿意,它们可以有不同的扩展名,即“.inc”)。这些又可以包括其他文件。完全有可能多次包含同一个文件——但是通常 ASP 引擎可以处理这个问题。重要的是要记住,在任何实际的 ASP 处理开始之前,所有包含都被处理成一个大文档。因此,一旦处理了所有包含,您就有了一个大文档。然后 ASP 引擎从顶部开始并逐行处理代码。您可能会将 html 和 ASP 代码全部交织在一起,并调用程序。

如果您可以编写 C# 或 VB 程序,那么读取 ASP 文件应该不会太困难。在那个阶段,您可以开始一次处理一页的功能。请记住,在 ASP 中也没有“回发”或视图状态概念。同样,这是 ASP.NET 试图抽象 Web 编程来表示基于事件的方法。

抱歉,最后一件事 - 某些命令(例如 ASP 中的显式选项)必须是父 ASP 文档中的第一件事,因此必须始终出现在任何其他代码或标记之前。之后代码和标记可以混合在一起 - 导致臭名昭著的“标签汤”,ASP 将被记住。

【讨论】:

保罗所说的一切都是正确的。我要补充的唯一一点是,您不应该将其视为转换,而应视为重做。与其尝试将经典的 asp 转换为 2.0,不如尝试复制功能并确保业务逻辑相同。 +1 我可以补充一下吗 - 我想与 MVC 的比较有点牵强 - 但我猜你没有开箱即用的控件(和视图状态) - 你需要处理状态手动 ;) 你也可以查看download.microsoft.com/download/d/4/2/…【参考方案2】:

获取您的包含并对其进行分类:

1) 代码函数 2) 模板函数

所有代码功能都应放入业务对象类或模块中。模板功能应放置在用户控件中,然后是母版页。我强烈建议使用母版页来控制新项目的模板化外观,因为这样可以节省大量时间来管理站点并将所有实际页面功能转移到新页面中。

ASP 是一种脚本语言,其中 Asp.Net 可以编写脚本或编译。我建议选择网站项目,因为这将为您在部署代码的细节方面提供最大的灵活性。 Web 应用程序项目会将所有内容编译成一个易于部署的单一 .dll 文件,但如果/当页面代码交织在一起时,它会导致大量回归测试。

一旦您建立了模板结构、通用类、数据访问层和母版页/用户控制结构,就变成了逐页浏览并将其转换为新代码的任务。

【讨论】:

以上是关于经典 ASP 到 ASP.NET 2.0 的转换的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core 2.0 中将 DataTable 转换为 IEnumerable<T>

经典ASP.NET MVC3.0入门详解

排序时在 ASP.NET 2.0 中的高效自定义分页

ASP.NET:将外部变量传递到 <asp:sqldatasource> 标记 ASP.NET 2.0

ASP.NET 2.0 JQuery AJAX 登录

ASP.NET MVC 核心 POST 请求未将 JSON 数据转换为模型