WebMatrix進階教程(4):如何使用布局

來源:互聯網
上載者:User
微軟發布Web開發工具WebMatrix的進階教程,協助開發人員人士認識這一號稱微軟史上最強的Web開發工具。接下來本期將繼續為您介紹以下教程。

導讀:Microsoft WebMatrix是一個免費的工具,可用於建立、自訂和在Internet上發布網站。
WebMatrix使您能夠輕鬆建立網站。您可以從一個開源應用程式(比如WordPress、Joomla、 DotNetNuke或Orchard)開始,WebMatrix會為您處理下載、安裝和配置這些應用程式的任務。或者您可以使用許多內建的模板自行編寫代碼,這些模板有助於您迅速上手。無論您做何選擇,WebMatrix都提供了您的網站運行所需的一切內容,包括Web伺服器、資料庫和架構。通過在您的開發案頭使用與您將在Web主機上使用的相同堆棧,將網站上線的過程變得既輕鬆又順利。
您可以從http://web.ms/webmatrix下載它。
現在您只需花幾個小時便可學會使用WebMatrix、CSS、HTML、HTML5、ASP.NET、SQL、資料庫等知識以及如何編寫簡單的Web應用程式。內容如下:

目前為止,您瞭解了如何使用WebMatrix建立一個非常簡單的網頁,此網頁如何在多種不同的瀏覽器中運行,以及如何使用CSS樣式來使基本的網頁更加美觀。

在本章中,您將更進一步,開始使用伺服器編程。您可能習慣於用戶端編程,比如構建在電話、案頭上啟動並執行應用程式或者甚至在瀏覽器內啟動並執行JavaScript應用程式。伺服器編程的重要區別在於,許多應用程式代碼不在用戶端裝置上運行。相反,終端使用者的操作會向伺服器發起網頁請求,如果該網頁是“活動”網頁,伺服器將運行代碼並使用該代碼產生將發送給瀏覽器的 HTML 標籤和值。然後瀏覽器呈現此 HTML,使用者會看到顯示的結果。

隨著您技能的不斷提升,您將發現有時候將代碼混搭在一起會很有用,一些代碼在瀏覽器上運行(通常使用JavaScript或Silverlight等富Internet應用程式(RIA)技術),剩餘代碼在伺服器上運行。

WebMatrix為網頁編程引入了Razor文法,它提供的一項功能非常強大,但非常簡單,那就是布局引擎。在本文中我們將介紹使用布局功能將所有常見的HTML(比如 <head>和頁尾內容)放在一個位置並為您的網頁自動產生這些內容,這樣當構建網頁(比如電影列表)時,該網頁的檔案將僅擁有該網頁的主要內容,您可以添加並完全控制剩餘內容。
建立使用Razor的CSHTML網頁

目前為止,您建立了使用.HTM 或 .HTML副檔名的HTML網頁。這些是靜態網頁,所以瀏覽器調用它們的地址時,伺服器會將它們和它們的內容發送給瀏覽器。伺服器不會以任何方式處理該網頁。
您可能聽說過“動態”網頁,這些網頁是伺服器基於HTML以及在伺服器上運行來確定應該如何構建網頁的代碼所構建的,構建的內容將HTML化。動態網頁能夠實現真正強大的使用情境,本系列的後續內容將使用它們。除此之外,它們將允許您將電影儲存到資料庫中,讓伺服器利用資料庫中的資料產生您網頁的內容,您無需直接在 HTML 網頁上編寫電影標題,也無需在希望更改列表時更改網頁。
在本節中,您將建立第一個動態網頁。

在WebMatrix 中,動態網頁具有 .CSHTML 或 .VBHTML副檔名。它們實際上是HTML檔案,包含使用 C# (CS) 或 Visual Basic (VB) 編寫的內聯代碼,這從副檔名可以看出。我將使用 CSHTML 檔案,這樣能夠使用 C# 語言在網頁上編寫內聯代碼。執行此操作的方法,以及支援在 HTML 內部執行此操作的文法具有暱稱“Razor”。
我們建立一個動態網頁。

使用WebMatrix,在 Files 工作區中,建立一個名為movies.cshtml的新CSHTML網頁:

WebMatrix將建立一個網頁,它看起來像一個基本的HTML網頁。將此網頁的內容替換為以下內容:

<div id="movieslist">    <ol>     <li><a href="#">Its a wonderful life</a></li>     <li><a href="#">Lord of the Rings</a></li>     <li><a href="#">The Fourth World</a></li>     <li><a href="#">The Lion King</a></li>    </ol>   </div>

這段代碼是不是看起來很奇怪?代碼中沒有<HTML>標記,沒有<HEAD>或<BODY>標記,但它仍然能生效!或者至少能基本生效。運行它,您將看到以下介面:

頁首和頁尾

上面的網頁非常類似於我們之前建立的網頁,但是讓我們將網頁頁首定義為HTML中包含電影列表的<div>之前的所有內容,將頁尾定義為 HTML中包含電影列表的<div> 之後的所有內容。不要將此與您到目前為止一直使用的 default.html 網頁的 <header> 和 <footer> 標記混淆了。
建立一個名為“PageHeader.cshtml”的新網頁,將 default.html 中 moviesList <div> 上方的所有內容複寫到它之中。它應該類似於:

<!DOCTYPE html>  <html lang="en">  <head>    <meta charset="utf-8" />    <title>My Favorite Movies</title>    <link rel="stylesheet" type="text/css" href="movies.css" />  </head>  <body>    <header>      <h1>A list of my Favorite Movies</h1>    </header>

類似地,建立一個名為“PageFooter.cshtml”的新網頁,將 default.html中moviesList <div>下方的所有內容複寫到它之中。它應該類似於:


 <footer>    This site was built using Microsoft WebMatrix.       <a href="Download>http://web.ms/webmatrix">Download it now.</a>    </footer>  </html>

使用Razor動態添加頁首和頁尾

現在您建立了這兩個網頁,接下來使用“Razor”編寫第一部分伺服器代碼。WebMatrix 通過使用“@”字元,突出了HTML和“Razor”代碼之間的區別。將此字元放在指示伺服器如何操作的任何程式碼之前。
例如,以下命令:
@RenderPage("pagename")將導致伺服器從“pagename”載入HTML並將它放在當前檔案中的此位置。所以對於我們的樣本,如果將movies.cshtml更改為:

@RenderPage("PageHeader.cshtml")    <div id="movieslist">    <ol>      <li><a href="#">Its a wonderful life</a></li>      <li><a href="#">Lord of the Rings</a></li>      <li><a href="#">The Fourth World</a></li>      <li><a href="#">The Lion King</a></li>    </ol>    </div>  @RenderPage("PageFooter.cshtml")

當運行網頁時,它將類似於以下介面:

它與靜態 HTML 檔案的外觀完全一樣。您不應該感到奇怪,因為它現在具有相同的頁首和頁尾(包括要求網頁載入 CSS 的代碼)以及相同的本文。但是可以看到,現在對頁面的處理輕鬆多了,因為所有頁首和頁尾代碼都不需要處理,您建立的任何新網頁都將具有相同的頁首、頁尾和樣式表。

建立布局網頁

使用此方法,您建立了網頁,然後在頁面運行時使用Razor代碼將頁首和頁尾程式碼封裝含在網頁上。這是一種自底向上的方法。
另一種可能更有效方法是建立一個布局,將該布局用作每個網頁的模板,然後將您想要的特定內容包含在該模板中。這更像是一種自頂向下的方法。
我們看一下它的工作原理:建立一個新CSHTML網頁,您將它命名為 _siteLayout.cshtml。
將建立的網頁的內容替換為以下內容。您可能發現這些代碼很熟悉,因為它們是您之前建立的靜態 default.html 網頁中的所有內容

 <!DOCTYPE html>  <html lang="en">  <head>    <meta charset="utf-8" />    <title>My Favorite Movies</title>    <link rel="stylesheet" type="text/css" href="movies.css" />  </head>  <body>    <header>      <h1>A list of my Favorite Movies</h1>    </header>    <div id="movieslist">      <ol>        <li><a href="#">It's a wonderful life</a></li>        <li><a href="#">Lord of the Rings</a></li>        <li><a href="#">The Fourth World</a></li>        <li><a href="#">The Lion King</a></li>      </ol>    </div>  <footer>  This site was built using Microsoft WebMatrix.   <a href="http://web.ms/webmatrix">Download it now.</a>  </footer>  </html>

現在將名為“movieslist”的 <div> 替換為以下代碼:

@RenderBody()

請記住,前面我們說過“@”符號告訴WebMatrix此時在伺服器上運行代碼。RenderBody 命令只是告訴 WebMatrix 在此位置呈現網頁的內容。

下面是 _sitelayout.cshtml 網頁現在應該包含的內容:

<!DOCTYPE html>  <html lang="en">  <head>    <meta charset="utf-8" />      <title>My Favorite Movies</title>      <link rel="stylesheet" type="text/css" href="movies.css" />    </head>  <body>    <header>      <h1>A list of my Favorite Movies</h1>    </header>    @RenderBody()    <footer>      This site was built using Microsoft WebMatrix.       <a href="http://web.ms/webmatrix">Download it now.</a>    </footer>  </html>

所以,對於您剛才建立的網頁movies.cshtml,該網頁的內容為 <div> 和 <ol><li> 列表。因此我們的理念是,當您瀏覽到 CSHTML 網頁時,WebMatrix 將使用布局網頁確定如何繪製網頁,因此它擷取標題、CSS 和來自布局網頁的所有內容。

在嘗試此代碼之前,不要忘記從movies.cshtml 刪除@RenderPage 命令。

然後建立 _PageStart.cshtml

把其中的內容替換為:

@{      Layout = "~/_siteLayout.cshtml";   }

_PageStart.cshtml告訴啟動的 cshtml 頁與布局檔案關聯


現在啟動movies.cshtml,便可看到效果


備忘:movies.css


[css] view plain copy

body {  font-family: Tahoma, Verdana, Geneva, sans-serif;  width: 85%;  margin: 20px auto;  }     header {  padding: 10px;  border-bottom: 1px solid #e5e5e5;  }     header h1 {  font-size: xx-large;  font-weight: normal;  padding: 0px;  margin: 0px;  }     #movieslist{  margin: 20px 0;  }     #movieslist ul {  list-style: none;  margin: 0;  padding: 0;  }     #movieslist li a {  font-size: large;  color: #000000;  display: block;  padding: 5px;  }     #movieslist li a:hover {  border-left: 10px solid #94c9d4;  padding-left: 10px;  background-color: #e7f5f8;  text-decoration: none;  }  footer {  font-size: smaller;  color: #ccc;  text-align: center;  padding: 20px 10px 10px 10px;  border-top: 1px solid #e5e5e5;  }

以上就是WebMatrix進階教程(4):如何使用布局的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.