Asp.net MVC 3 Razor視圖引擎的使用(一)

    剛接觸mvc3的人對於Razor的語法必然有些陌生,以至於在開發時,遇到一些小小的阻礙,在此,我整理了一些常用的Razor語法,便於查閱。

    『視圖展示數據的一些語法』

    1. 遍歷ViewData中的數據,生成數據表格:

                @if (ViewData["PageData"] != null)
                {
                    List<OrgScoreWorkEn> list = ViewData["PageData"] as List<OrgScoreWorkEn>;
                    if (list != null && list.Count > 0)
                    {
                        foreach (OrgScoreWorkEn oen in list)
                        {
                    <tr class="toptd" οnmοuseοver="this.className='topovertd';" οnmοuseοut="this.className='toptd';">
                        <td>
                            <ul>
                                <li>@oen.fOrgName</li>
                                <li>@oen.fWorkTaskCode</li>
                            </ul>
                        </td>
                        <td>
                            <ul>
                                <li>@oen.fBeginDate.ToString("yyyy-MM-dd")至@(oen.fEndDate.ToString("yyyy-MM-dd"))</li>
                                <li><a href="#" οnclick="window.location.href='#';">
                                    @oen.fScoreTaskHTML
                                    </a>
                                </li>
                            </ul>
                        </td>
                        <td>
                            @oen.fModifyDate.Value.ToString("yyyy-MM-dd")
                        </td>
                        <td>
                            <ul>
                                <li>
                                    <img οnclick="window.location.href='@Url.Action("ScoreWorkEdit", "ScoreWork")[email protected]';" src="@Url.Content("~/Content/images/editic.gif")" alt="編輯機構任務" style="cursor:pointer;" />
                                    <img οnclick="if(confirm('確定刪除機構任務?')){ DeleteOrgWork('@Url.Action("ScoreWorkDelete", "ScoreWork")', '@oen.fWorkId');}" src="@Url.Content("~/Content/images/icon_delete.png")" alt="刪除機構任務" style="cursor:pointer;" />
                                </li>
                                <li>
                                    <img οnclick="window.location.href='#';" src="@Url.Content("~/Content/images/icon_zoom.png")" alt="查看" style="cursor:pointer;" />
                                    <img οnclick="window.location.href='#';" src="@Url.Content("~/Content/images/icon_child.png")" alt="新增下級任務" style="cursor:pointer;" />
                                </li>
                            </ul>
                        </td>
                    </tr>
                        }
                    }
                }
    從上面的例子中,可以看出Razor視圖的優點,換作在mvc2或者webform中,我們必然少不少使用<%%>括住c#代碼的塊,而html標籤必然放在<%%>塊之外,但是使用Razor的語法,我們可以清晰看出程序塊的層次關係。

    另外@Url.Content是個非常體貼的方法,相信很多人在使用相對路徑時,遇到過"../../"這種煩惱,而Url.Content則可以避免這個問題,只需指定文件的絕對路徑,它便可爲其生成相對路徑,另外,它的作用可不僅僅限於指定文件的相對路徑,它還可以這樣用:

    @Html.Hidden("url", @Url.Content("~/View/Content/images/"))

    你可以將一個文件夾的相對路徑存在隱藏域中,這樣,便可以解決在單獨的js文件中,無法使用Razor語法的情況

    另外一個需要注意的地方:“@oen.fBeginDate.ToString("yyyy-MM-dd")至@(oen.fEndDate.ToString("yyyy-MM-dd"))”,@()相當於<%= %>或<%: %>的作用:如果不加“()”,“@變量名”中的@符號緊跟在漢字或者其他字符後面,而沒有跟在html標籤後,它會被識別爲普通的@字符,而不算Razor的語法塊,除非你使用回車另取一行,讓@變量名前沒有其他字符,這種情況,使用@(變量名或表達式)可以解決問題。

    2. 其他語法

    @* *,註釋的語法

    @using,引用包語法,相當於<%@ Import Namespace="***" %>,例如:@using System.Data;

    @{ },c#代碼塊標記,相當於<% %>

    @Model,指定視圖的模型,相當於mvc2中,“<%@ Page Title="服務報名結束確認|託業" MasterPageFile="~/Views/Shared/OLMasterPage.Master" Language="C#"
    Inherits="System.Web.Mvc.ViewPage<dynamic>" %>”紅色字體的定義。

    @selection,指定一個節的定義,例如:@selection header{ <script src="@Url.Content("~/Content/js/ScoreWork.js")" type="text/javascript"></script> }

        @selection content{

            @*body的內容*

         } 

    @@,轉義,連續兩個@,表示普通字符“@”

    方法調用跟mvc2沒有太大的區別:@Html.Partial("***")與<%: Html.Partial("****") %>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章