1. 程式人生 > >ASP.NET MVC 學習筆記-2.Razor語法

ASP.NET MVC 學習筆記-2.Razor語法

包含 鏈接 完整 rdquo 復雜 per 幫助 完成後 ade

1. 表達式

表達式必須跟在“@”符號之後,

2. 代碼塊

代碼塊必須位於“@{}”中,並且每行代碼必須以“;”結尾。代碼塊中定義的變量可能會被同一個域中的其他塊使用。比如,定義在視圖頂部的變量可以被同一視圖中的代碼塊和代碼段訪問。

3. 布局

Razor通過layouts保持網頁外觀布局的一致性。布局模板包含基本的標簽,並可以指定渲染視圖內容的位置。比如

基本布局文件(_Layout.cshtml)

<!DOCTYPE Html>
<html 
lang=”en”> <head> <mete charset=”utf-8”/> <title>@View.Title</title> </head> <body> <div class=”header”> @RenderSection(“Header”); </div> @RenderBody()
<div class=”footer”> @RenderSection(“Footer”); </div> </body> </html>

布局頁面定義完成後,其他視圖頁面就可以引用該布局文件,比如

@{Layout=”~/_Layout.cshtml”;}
@section Header {
    <h1>Page Header Content</h1>
}
@section Footer {
    Copyright @DateTime.Now.Year
}
<div class=”main”> Page Main Content </div>

使用Razor布局和內容視圖將頁面組合在一起,展示了一個完整的頁面,其中的每一塊定義了頁面的不同部分。

4. 部分視圖

使用布局通過重用部分HTML代碼做到網站外觀的一致性,但是有一些情況,布局則無法實現,比如,網頁上的一部分信息需要多次重復出現(格式一致,顯示內容不一致),例如,購物網站頁面上的交易列表,只顯示交易名稱、當前價格和摘要信息。

ASP.NET MVC通過部分視圖的技術實現了這個需求。

首先,先定義部分視圖,並保存為單獨的視圖文件(例如,~/Views/Shared/Acution.cshtml)。

@model Auction
<div class=”auction”>
    <a href=”@Model.Url”><img src=”@Model.ImageUrl”</a>
    <h4><a href=”@Model.Url”>@Model.Title</a></h4>
    <p>Current Price :@Model.CurrentPrice</p>
</div>

然後,在需要使用該部分視圖的位置,調用ASP.NET MVC自帶的HTML方法調用它,比如:

@model IEnumerable<Auction>

<h2>Search Result</h2>
@foreach(var auction in Model){
    @Html.Partial(“Auction”,auction);
}

其中,Html.Partial()方法的第一個參數“Auction”是部分視圖名稱,並需要包含擴展名。第二個參數則是傳遞到部分視圖的數據模型。第二個參數不是必須的,如果不傳遞,系統會默認將調用該部分視圖的數據模型進行傳遞,比如,本例中的IEnumerable<Auction>。

由此可見,使用部分視圖能夠降低網頁中的代碼重復和編碼復雜性,增強可讀性。

5. 顯示數據

MVC架構分為三層,模型、視圖和控制器。三層之間彼此分離且協同工作,其中,就需要控制器擔當“協調”的角色,視圖將請求交給控制器,控制器對模型進行操作,並將操作結果反饋給視圖,視圖對模型的數據進行呈現。

控制器和視圖之間的數據傳遞方式,ASP.NET MVC 提供了以下幾種實現方式:

1) ViewData

ViewData實現方式,它的實現類似於Dictionary的操作,使得數據傳遞變得非常簡單。

在控制器方法中使用類似於ViewData[“DataKey”]=dataValue進行賦值,在視圖文件中,使用 var dataValue=ViewData[“DataKey”]獲取數據。

2) ViewBag

ViewBag的使用類型與C#中的dynamic類型,可以直接操作其屬性,比如,

控制器方法:ViewBag.DataProperty=dataValue;

視圖文件:var dataValue=ViewBag.DataProperty;

3) Model屬性

Model屬性屬於強類型,並且是動態類型,可以在視圖上輸入”@Model”就可以直接訪問。

6. HTMLHelper和URLHelper

Web請求的目標就是向用戶發送HTML代碼,在Razor語法中,ASP.NET MVC有兩個重要的幫助類來生成對應的HTML代碼,分別是HTMLHelper和URLHelper。HTMLHelper類用來生成HTML標記代碼,URLHelper用來生成URL地址鏈接。

<img src=’@Url.Content(“~/Content/images/header.jps”)’/>
@Html.ActionLink(“Home”,”Index”,”Home”)

渲染得到的HMTL代碼為:

<img src=’/vdir/Content/images/header.jpg’/>
<a href=”/vdir/Home/Index”>HomePage</a>

ASP.NET MVC 學習筆記-2.Razor語法