2012-07-08 128 views
22

我認爲微軟必須有一個理由用RAZOR語法來增強ASP.Net。Asp.Net Webforms VS Asp.Net WebSite(Razor)VS Asp.Net MVC

關於創建新網站項目 visual studio的對話框中,還有另外一種創建ASP.Net(Razor)的選項。我第一次跨越術語剃刀來了,當我讀了一本書上Asp.Net MVC,我不知道它的存在對ASP.Net

enter image description here

我知道剃刀語法是什麼for,在MVC 3中引入。在問這個問題之前,我決定爲ASP.Net(Razor)創建一個測試項目,看看它與普通的ASP.Net webforms和ASP.Net MVC有什麼不同。我沒有發現像MVC中那樣的Model/View/Controllers文件夾。

我發現母版頁不同的規定和母版頁是清潔的,沒有更多的<asp:ContentPlaceHolder />

但我的問題是:

  • 我注意到它使用.cshtml,還有沒有更多的codebehinds?
  • ASP.Net(Razor)和ASP.Net MVC
  • 之間的異同點可以擴展爲ASP.Net MVC的功能,例如:添加控制器?查看/模型,自定義路由我猜?
  • 爲什麼當我們有ASP.Net MVC時就存在這個問題?這不會鼓勵不願意轉向ASP.Net MVC嗎?
  • 以及爲什麼要選擇ASP.Net + Razor而不是ASP.Net MVC?

UPDATE:ASP.NET Web Pages in particular was designed,使其容易 人誰已經知道HTML服務器處理添加到自己的網頁。 這對學生,業餘愛好者,一般人來說是 新編程的不錯選擇。它也可以爲開發商誰 有non-ASP.NET網絡技術

更新ASP.NET Web Pages ASP.NET網頁針對誰想要一個簡單的Web開發故事開發,沿着PHP的線經驗的好選擇。在Web頁面模型中,您創建HTML頁面,然後將 的基於服務器的代碼添加到頁面,以動態控制如何呈現標記。網頁是 專門設計爲一個輕量級框架,它是 到ASP.NET的最簡單的入口點,用於瞭解HTML但可能 沒有廣泛編程經驗的人員 - 例如學生或 愛好者。對於知道PHP或類似框架的Web開發人員來說,這也是開始使用ASP.NET的好方法。

Asp.Net Web Pages

請,我需要你的技術意見。 謝謝。

回答

16

這是一個很好的問題。首先,讓我們描述剃刀。

Razor是一個解析服務器端代碼並​​發出Html的引擎,就像ASP.NET Web Forms一樣,只有不同的,可以說是更加簡化和簡潔的語法。

Razor v。Web Forms補充:在ASP.NET Web Forms中,您需要確定何時開始用'<%'編寫服務器代碼,然後在完成編寫服務器代碼時,需要用' %>」。我喜歡ASP.NET Web Forms,但這很笨拙。使用Razor,您可以確定何時開始使用'@'編寫服務器代碼,然後在下一次開始編寫服務器標記(從'<'開始)時,它會「發現」您已完成服務器代碼。這是一個更簡潔的方式來編寫與某些服務器代碼混合的html。

ASP.NET Web Page是創建簡單Web應用程序的框架。 ASP.NET MVC是一個框架,用於使用模型 - 視圖 - 控制器(MVC)模式創建具有Web窗體或Razor引擎的Web應用程序。 ASP.NET Web窗體是一個使用Web窗體渲染引擎創建Web應用程序的框架。

最終目標是根據正在構建的應用程序的複雜程度提供選擇。通過幫助你爲你的應用程序做出正確的選擇來理解每一個。

其它鏈接:

+1

你的解釋很好。你提出了你的觀點,但這還不夠。那麼在ASP.Net(Razor)_中使用Server Controls/UserControls呢? ASP.Net(Razor)項目幾乎看起來像一個空的ASP.Net MVC項目。你能多快把它變成ASP.Net MVC? - 技術 – codingbiz 2012-07-08 05:43:24

+2

MVC中的並行用戶控件有部分視圖。在我看來,你不會轉換/轉換。只需重建。儘管您可以共享視圖。 Web編程有兩個部分,確定您將在頁面上顯示的內容(C#)並將其實際呈現在頁面上。我無法在一篇文章中教你關於所有3的一切。對不起,說。更多信息請訪問http://asp.net/mvc/mvc3 – 2012-07-08 05:46:27

+0

我們爲什麼要將服務器端代碼與標記混合在一起,這將成爲維護噩夢? – IrishChieftain 2012-07-08 08:34:39

3

有沒有代碼屁股默認,但你可以很容易使你的剃鬚刀文件從您的自定義類繼承:

@inherits Index 

然後

public class Index : WebViewPage { } 

(點擊此處瞭解詳情:http://www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html

這更像是一種老式的網絡做法,更像asp3。與mvc的區別在於,mvc提供了一個巨大的框架來支持真實世界的應用程序(使用路由,控制器和操作,而不僅僅是「標記中的代碼」)。

我覺得它的存在作出的事情是很簡單,但我真的不知道......

最後,我總是會選擇asp.net的MVC剃刀。

希望它可以幫助

+0

我從你的答案(+1)中挑選了一些知識以獲取有用的內容 – codingbiz 2012-07-08 05:46:32

+1

爲什麼投票下來? – ivowiblo 2012-07-08 06:57:08

0
  1. 沒有 「代碼屁股」 在MVC,期。你有什麼是控制器,既存在剃刀又存在非剃刀。
  2. 它們只是兩種不同類型的標記。 (查看下一個回答)
  3. 它不是取代MVC,它只是另一種選擇。傳統的標記非常冗長。 Razor語法簡潔。
+1

您可以使用WebForms具有的相同策略來隱藏代碼。 「Period」 – ivowiblo 2012-07-08 04:26:25

+0

他也表示它不提供控制器,所以他不是在談論Asp.Net MVC(Razor)項目。 – ivowiblo 2012-07-08 04:28:10

+0

http://www.compiledthoughts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html – 2015-06-23 21:39:26

16

在MVC模式中,M是示範,C是控制器,而V是視圖。所以很自然地,在ASP.NET MVC模型中,有一個View Engine的概念。剃刀只是提供的視圖引擎之一。另一個開箱即用的是「舊」WebForms(也可以通過這種方式編寫自己的View Engine)。所以Razor沒有隱藏在WebForms視圖引擎邊界內的代碼隱藏的概念。

所以這個有點全說。 Razor處理MVC的View部分(如果您選擇使用它而不是WebForms)。它與M或C無關。

就個人而言,如果您選擇ASP.NET MVC模式,或者在沒有MVC的情況下使用普通WebForms,我一定會選擇Razor View Engine,因爲Razor的設計較少詳細,比Webforms更簡單。這也只是更近的所以它試圖成爲...只是更好:-)

作爲一個側面說明,剃刀分析器也可以用於ASP.NET MVC的以外的。它在一個不依賴於MVC或者Web程序集的程序集中實現。在這裏看到更多關於此:http://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

1

好了,你有兩個選擇:

  1. 使用的WebForms:使用外的箱子,就可以使用服務器端控件(混合標記和業務規範),並使用母版頁和皮膚,但面臨一些複雜的這些便利! :)

  2. 使用MVC:或使用分離的設計模型,它給你一個更有組織的代碼庫。你可以先製作一個設計原型,或者先製作一個商業代碼,然後再構建另一個方面,非常簡單。即使你可以讓設計師更好地控制他的作品,讓他有能力做他/她想做的每件事。 - >這個是我的首選,因爲它讓我對代碼有更多的控制,使我的代碼更加簡潔和乾淨。

如果您選擇了MVC模式,那麼你就面臨着另一個選項...查看發動機

  1. 老MVC視圖引擎:它不壞,但就是有點冗長
  2. Razor引擎:它和#1一樣,爲什麼你不想使用它?它並沒有取代MVC模式。它也更加簡潔和容易,你既擁有MVC的力量,又具有Razor Engine的簡單性。 Razor是一種更智能的標記語法,可幫助您專注於業務,而不是編寫「<%」! 通過使用剃刀語法,您只需提供一個好處,MVC的全部功能就在您的指尖!

你也可以寫簡單的asp.net網頁,只需用剃刀(C#或VB)的語法。(就像PHP)

  • 我個人的選擇是MVC +剃鬚刀,最好的組合!
0

爲了擺脫webform,MVC,Razor,WebPages以及更多來自微軟的困惑,我更喜歡html - > javascript - > webapi。