2011-11-29 92 views

回答

44

視圖引擎負責從創建HTML您觀點。視圖通常是某種HTML和編程語言的混合。其中大部分背後的格局被稱爲two-step view

例如,ASP.NET自帶的視圖引擎開箱即用。這是視圖有很多標籤,如<% %><%: %>。它使用.aspx文件擴展名。

使用ASP.NET MVC3,添加了另一個開箱即用的視圖引擎Razor,它具有更吸引人的語法,例如, <div>@Model.UserName</div>

視圖引擎的選擇很重要,因爲視圖引擎的功能集完全不同。例如,一些支持渲染爲PDF文件;有些不能在web上下文之外使用(對於舊的ASP.NET視圖引擎也是如此),而另一些則可以(例如Razor)。當您想要以建立視圖的相同方式創建HTML電子郵件時,「離線」呈現視圖派上用場,這些電子郵件應該從後臺工作人員而不是Web應用程序發送。

在SO上有一個很好的比較asp.net view engines

好消息是,你可以在ASP.NET MVC中使用多個視圖引擎並行,但除非必要,我不會推薦它。

Razor引擎中有一些非常漂亮的擴展點。例如,您可以提供一個自定義視圖基類,這是一個強大的概念,可以輕鬆地在正確的位置添加大量功能,而無需混淆您必須處理的所有細節。

我現在會去剃刀。

+0

你能告訴我(給我一個鏈接)我如何呈現ViewEngines離線? – gillyb

+1

@gillyb:你最好的選擇是http://razorengine.codeplex.com/,它可以在ASP環境之外呈現Razor視圖。 – mnemosyn

2

視圖引擎是MVC用來從控制器查找和呈現視圖的視圖引擎。如果你對默認路由感到滿意,你可能不需要改變任何東西,但可以說你想讓你的共享文件通常位於root/views/shared中,而不是位於root/common中,那麼定製的viewengine就是你會需要創建才能做到這一點。

在這裏,您可以看到如何構建一個視圖引擎:

http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/

視圖引擎還負責渲染視圖,但因爲你剛開始學習MVC,你可能不會需要改變渲染功能只是

7

視圖引擎是什麼負責渲染您的視圖,並將您的代碼轉換爲光榮的HTML。因此,他們直接負責如何在視圖中編寫代碼。

基本上有兩個你需要關心的:ASPX和Razor。在我看來,Razor更加時尚和易於使用,只需在MVC3中支持即可。

例如,在ASPX代碼塊可能是這樣的:

<% foreach(var item in Model) { %> 
    <tr> 
     <td><%: item.Name %></td> 
    </tr> 
<% } %> 

儘管剃刀相當於看起來就像這樣:

@foreach(var item in Model) { 
    <tr> 
     <td>@item.Name</td> 
    </tr> 
} 
2

在MVC中,視圖引擎,你的瀏覽器和瀏覽器之間的工作方式是編譯你查看裏面的代碼,以提供有效的HTML輸出到瀏覽器中的一個。有許多可用的視圖引擎,其中一些是以下幾點:

  1. ASPX

  2. 剃刀

  3. 星火

  4. NHaml

  5. NDJango

  6. Hasic

  7. 抄網

  8. 貝爾維尤

  9. 夏普瓷磚

  10. 字符串模板

  11. 永擊敗

  12. SharpDOM

目前大多數開發人員喜歡使用Razor視圖引擎,因爲它提供的編程非常方便的方式。所有這些視圖引擎可能不支持ASP.NET MVC。

欲瞭解更多詳情,您可以訪問this article

1

視圖引擎適用於渲染HTML網頁瀏覽器或給用戶的應用程序中。它可以包含HTML標籤,服務器控件和一些編程語言。

Razor是MVC4框架的首選視圖引擎。

1

在ASP.Net MVC中,視圖引擎,你的觀點和瀏覽器之間的工作原理是通過考慮您的view.There提供輸出,以提供有效的HTML輸出到瀏覽器有很多類型的視圖引擎之一。

1)ASPX

2)剃刀

3)火花

4)NHaml

5)NDJango

6)Hasic

7)抄網

1

我在http://questionbox.in/view-engine-asp-net-mvc-razor-view-engine-asp-net-mvc-web-form-aspx-view-engine-asp-net-mvc/

中閱讀了描述性文章查看引擎使您可以將HTML從您的視圖呈現給瀏覽器。

有通過ASP.NET MVC支持多視圖引擎,但使用最廣泛的視圖引擎是

  • Web表單/ ASPX視圖引擎。
  • 剃刀視圖引擎。

Web表單視圖引擎/ ASPX視圖引擎:

  • Web窗體視圖引擎/ ASPX視圖引擎默認視圖引擎 爲Asp.net MVC項目。它可以從MVC 1.0
  • 用於Web窗體引擎命名空間是Web.Mvc.WebFormViewEngine
  • 這個視圖引擎
  • 文件擴展名類似於Web窗體爲:

的.aspx,用於查看就像Web Form頁面。 .ascx,部分視圖&編輯器模板就像用戶控件。 .master,對於佈局和母版頁,就像Web窗體中的母版頁一樣。

  • 不支持TDD(測試驅動開發)。
  • Web窗體引擎不能防止XSS攻擊手段,任何腳本在數據庫中保存的 將被解僱,而渲染頁面
  • 語法:<%:Html.ActionLink(「家」,「指數」)%>

Razor視圖引擎:

  • 的Razor視圖引擎是一種先進的視圖引擎,可提供MVC 3.0及更高版本
  • ASPX視圖的名稱空間引擎是Web.Razor。
  • 該視圖引擎的文件擴展名爲.cshtml(Razor C#),用於視圖, 部分視圖,編輯器模板和佈局頁面。 .vbhtml(Razor VB.NET),用於視圖,部分視圖,編輯器模板和佈局頁面。
  • 支持TDD(測試驅動開發)。相比於Web表單引擎
  • 剃刀引擎是有點慢。
  • 剃刀引擎防止跨站腳本攻擊(跨站點腳本攻擊)指 它渲染,以查看前編碼腳本或html標籤等<,>。
  • 剃刀語法是很容易理解和乾淨得多比Web窗體 語法。剃鬚刀使用@符號讓這樣的代碼爲:

    @ Html.ActionLink(「家」,「指數」)

1

視圖引擎呈現視圖到HTML表單的瀏覽器。如果我們談論的.Net框架的MVC應用程序,它支持以下2個視圖引擎:

1 Razor視圖引擎 2. Web窗體/ ASPX視圖引擎

差異: Razor視圖引擎使用佈局,但鑑於ASPX引擎使用的母版頁。

2. Razor View Engine使用部分頁面,但ASPX視圖引擎使用Web用戶控件。

3. Razor視圖引擎不是語言,它是標記語法。

4. @'符號在Razor Engine中用於編寫代碼。 @ Html.ActionLink(「Login」,「LoginView」) '<%:'分隔符用作起點,'%>'用作終點。您可以在ASPX引擎中編寫它們之間的代碼。

5. Razor View Engine對視圖,佈局和部分視圖具有.cshtml(使用C#)和.vbhtml(使用VB)擴展。 ASPX View Engine具有與簡單Web應用程序類似的擴展,如用於視圖的.aspx,用於UserControl的.acsx和用於母版頁的.master。

0

到目前爲止,每個響應有關ASP.NET。如果你正在尋找的NodeJS,視圖引擎,然後下面的一些是選項:

Jade (Pug) 
express-handlebars 
ejs 
React 

還有,我發現在https://github.com/expressjs/express/wiki#template-engines但上面的人似乎是我聽到有關的那些他們的整個列表最。

相關問題