从经典ASP迁移到ASP.net [已关闭]

wmvff8tz  于 2023-10-21  发布在  .NET
关注(0)|答案(6)|浏览(158)

已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

两年前关门了。
Improve this question
我来自一个经典的ASP背景,做了很多年,并转移到.NET已经过期,所以我已经开始学习. NET。
这是非常不同的至少可以说!它的结构有很大的不同,似乎工作有很大的不同,这是一个巨大的飞跃。然而,在我看来,它越来越令人敬畏。
我快速搜索了一下,找不到任何类似的问题,所以我创建了这个社区维基,如果你能列出陷阱/差异或任何你认为与你的回答相关的东西,可能会对很多人有帮助。
因此,总结一下,从经典ASP迁移到ASP.net?(c#或VB.net)的主要区别/陷阱是什么。请不要只是列出.net的语言功能,它需要在某人从一个迁移到另一个的上下文中。

fxnxkyjh

fxnxkyjh1#

我假设你正在转向WebForms(但你可能会考虑直接跳到MVC或Silverlight,因为WebForms即将过时)
FWIW当我采取行动时,以下可能是主要的陷阱:

  • 抵制使用经典约定<%=,#include的诱惑
  • 抵制手工编辑ASPX文件的诱惑-尝试只使用设计器
  • 如果您还没有熟悉OO,那么您将需要熟悉OO
  • 对于WebForms,您需要采用VB 6/ WinForms方法来处理按钮处理程序等
  • 使用ASP.NET控件--您不需要像在ASPClassic中那样对控件的状态进行微观管理

看一些视频:http://www.asp.net/general/videos#Videos%20on%20Migrating%20to%20ASP.NET

wz8daaqr

wz8daaqr2#

当我开始学习经典ASP时,我没有任何其他编程经验。我从来没有在windows窗体或控制台应用程序中构建过任何东西。所以,当我转到www.example.com时asp.net,我花了一段时间才弄清楚代码背后和控制事件处理程序到底发生了什么。在我最初的几个项目中,我试图像一个经典的ASP程序员一样编写代码。我会做沿着路线的傻事.

public void Page_Load(object sender, EventArgs e) {
    if (Request.ServerVariables["REQUEST_METHOD"] == "POST") {
      string myHtmlOutput = "";
      string firstName = "";
      if (Request.Form["ctl0_MainContent_FirstName"] != null) {
        firstName = Convert.ToString(Request.Form["ctl0_MainContent_FirstName"]);
        myHtmlOutput = "<h1>Hello "+ firstName +"</h1>";

        Response.Write(myHtmlOutput);
      }
    }
}

而不是WebForms的方式...

public void Button1_Click(object sender, EventArgs e) {
    if (!string.IsNullOrEmpty(FirstName.Text)) {
      MessageLiteral.Text = string.Format("Hello {0}", FirstName.Text);
    }
}

老实说,我认为如果asp.net MVC在我从经典ASP迁移过来的时候就已经存在了,我会更容易掌握它,因为我不必花那么多时间学习所有的ASP.NET抽象。

6vl6ewon

6vl6ewon3#

在你最喜欢的搜索引擎上有很多有用的文章。您需要先回答一些问题(http://www.google.co.uk/#hl=en&source=hp&q=transition+from+asp+to+asp.net&aq=f&aqi=&aql=&oq=&gs_rfai=&fp= a53 e9 ae 07 f1 cc 2a 8)
你打算使用ASP.NET Web窗体还是ASP.NET MVC?这个博客有一篇关于差异的好文章(http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx)。两者都有其价值。
你是打算尝试移植现有的代码还是做一个彻底的突破?
Razor是一种新的ASP.NET语法,我强烈推荐。它给人一种非常自然的感觉,将html和c#代码语法结合在一起。这个博客(http://blogs.msdn.com/b/davidebb/archive/2010/07/07/how-webmatrix-razor-asp-net-web-pages-and-mvc-fit-together.aspx)有一个很好的帖子,关于MS的最新堆栈之一,包括Razor。
学习面向对象编程。这是相当关键的。
http://www.asp.net是一个很好的资源。使用教程并阅读其他人的代码。
编辑:我忘了提,如果你打算专注于ASP.NET WebForms,请学习页面生命周期,因为不理解这一点会导致动态控件的常见错误。http://msdn.microsoft.com/en-us/library/ms178472.aspx

t5fffqht

t5fffqht4#

几年前我也做过同样的事情。我不能说我发现了任何“陷阱”;事实上,当我转向ASP.NET时,很多在经典ASP中经常让我感到厌烦的事情都消失了。
我认为最大的区别是从ASP/JScript转移到强类型C#。它迫使我在声明变量时不那么懒惰,因此我遇到的与范围或数据类型转换有关的bug要少得多。用C#编写可重用的、面向对象的代码也容易得多。
如果你刚开始接触它,我建议你(这只是我的意见)避开ASP.NETWebForms,直接跳到MVC。重新调整你的大脑使之在MVC模式下工作需要一段时间,但是一旦它“点击”,一切就都有意义了。
我们最近在我的办公室得到了this book,我彻底推荐它;不要让“专业”位把你赶走,它从基础开始,非常简单,易于理解。

hgtggwj0

hgtggwj05#

包括

经典ASP的优秀设计来自于使用包含文件来模块化代码。
在.net中,这是不可能的,因为它是基于面向对象的层次结构。

2mbi3lxu

2mbi3lxu6#

如果您正在使用Webform,那么请仔细阅读并了解ASP.NET的ViewState;一个页面是如何在回发过程中持续存在的。如果你打算涉足ASP.NETMVC,请阅读模型视图控制器。在这两种框架中,ASP.NET都是一种面向对象的语言,而经典语言则不是。

相关问题