2010-08-11 75 views
2

我來自一個經典的ASP背景,做了多年和多年,移動到.NET一直過期,所以我開始學習.net。從經典的ASP移動到ASP.net

至少可以這樣說!它的結構有很大不同,似乎工作方式有很大不同,這是一個巨大的飛躍。然而,看起來越來越棒了。

我有一個快速搜索,找不到任何類似的問題,所以我創建了這個作爲社區維基,如果你可以列出陷阱/差異或任何你認爲它在你的迴應相關可能會對很多人有所幫助。

因此,總之,從經典ASP到ASP.net的主要區別/陷阱有哪些?(c#或VB.net)。請不要只列出.net的語言功能,它需要在某人從一個移動到另一個的情況下。

+0

大問題 - ASP.NET Web窗體或ASP.NET MVC。或兩者? – 2010-08-11 14:15:26

+0

我想到的Web表單,我對MVC知之甚少!但MVC標籤的答案也受到歡迎。 – 2010-08-11 14:18:07

+1

請接受我的建議:直接跳到MVC。我希望它是之前發明的,併爲我節省了webForms的難題,試圖完成與他們自己的控制不同的任何事情。你會學得快得多。 – 2010-08-11 17:53:08

回答

1

我假設你正在向Web窗體(但你可以考慮直接跳到MVC或Silverlight作爲WebForms的是其出路)時,我提出了以下很可能是移動

FWIW主要陷阱:

  • 抵制使用經典的約定<%=,#包括
  • 抵制誘惑,手工編輯ASPX文件的誘惑 - 儘量只使用設計
  • 你將需要得到了OO加快,如果你還沒有這樣做的話
  • 對的WebForms,您將需要採取VB6 /的WinForms方式按鈕處理等
  • 使用ASP.NET控件 - 你不必計較你在ASP經典

採取做微觀的控制狀態在某些視頻: http://www.asp.net/general/videos#Videos%20on%20Migrating%20to%20ASP.NET

0

包括

良好的設計從傳統的ASP來自使用包括文件modularise你的代碼。

在.net中,這是不可能的,就像基於面向對象的層次一樣。

+1

你應該完全拋棄服務器端包括 - 如果沒有其他原因,那麼當你編輯一個沒有'@ Page'聲明的包含文件時(如果你正在使用Visual Studio,就是這樣),Intellisense會變得無法使用。 – 2010-08-11 14:30:09

0

如果您正在進入Webform,請閱讀並瞭解ASP.NET的ViewState;一個頁面如何在帖子後面持續存在。如果您打算涉足ASP.NET MVC,請閱讀模型視圖控制器。在任何一種框架中,ASP.NET都是一種面向對象的語言,而經典的則不是。

+0

C#和VB.NET是面向對象的語言; ASP.NET本身就是一個框架。 – 2010-08-11 14:27:40

+0

正確,我的錯誤。 – gnome 2010-08-11 18:20:58

1

在您最喜愛的搜索引擎中有一堆有用的文章。您需要自己回答一些問題(http://www.google.co.uk/#hl=en&source=hp&q=transition+from+asp+to+asp.net&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a53e9ae07f1cc2a8

您打算使用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)在包括Razor在內的最新MS版本中有一篇很好的帖子。

瞭解面向對象的編程。這非常重要。

得到http://www.asp.net這是一個很好的資源。使用教程並閱讀其他人的代碼。

編輯: 我忘了提及,如果您要關注ASP.NET WebForms,請了解頁面生命週期,因爲不理解這會導致動態控件出現常見的一類錯誤。http://msdn.microsoft.com/en-us/library/ms178472.aspx

1

我好幾年前做同樣的事情。我不能說我發現了任何「陷阱」;實際上很多令人討厭的事情,總是用於吸引我在經典的ASP剛剛消失,當我轉移到ASP.NET。

我認爲最大的區別是從ASP/JScript轉向強類型的C#。它強制我在聲明變量時不那麼懶惰,因此我遇到了與範圍或數據類型轉換有關的更少的錯誤。在C#中編寫可重用,面向對象的代碼也更容易。

如果你剛剛進入它,我會建議你(這個只是我的意見),以避開ASP.NET Web窗體,並直接跳到MVC。重新調整你的大腦在MVC模式中工作需要一段時間,但是一旦它「點擊」,它就完全有意義。

我最近在我的辦公室得到了this book,我徹底推薦它;不要讓「Pro」這個詞讓你失望,它從基礎開始,非常簡單易懂。

+0

我似乎意外地開始在Web窗體中開發,我曾看到MVC提到過,但根本沒有查找它,使用webforms有多糟糕?我沒有意識到這種分裂。 – 2010-08-11 14:31:28

+0

是的,這是一種完全不同的工作方式,但它可以更容易地分離問題。關於Web Forms沒有什麼可怕的,只是MVC看起來好多了,對我來說更乾淨,更不用提更多的可測試性了。看看[這篇文章](http://msdn.microsoft.com/en-us/magazine/dd942833.aspx)和[這篇文章](http://www.devcurry.com/2009/09/difference -between-aspnet-webforms-and.html),這兩種方法的優點和缺點。 – 2010-08-11 14:36:22

+0

謝謝,我現在要堅持使用這個項目的webforms,然後再轉向MVC。 – 2010-08-11 14:41:01

1

當我開始使用經典ASP時,我沒有任何其他編程經驗。我從來沒有在Windows窗體或控制檯應用程序中構建過任何東西。所以,當我轉移到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抽象。