ASP.NET MVC 5 學習教程:修改視圖和布局頁


起飛網 ASP.NET MVC 5 學習教程目錄:

首先,你希望改變頁面頂部的“Application name”鏈接,這段文字在每個頁面都有,是公用的。盡管它出現在程序中的每個頁面,但實際上它只寫在一個地方。在解決方案資源管理器中找到 /Views/Shared 文件夾,打開_Layout.cshtml 文件。這個頁面叫做布局頁,放在所有頁面都能用的共享文件夾中。

圖1:_Layout.cshtml文件的位置

image

布局模板允許你在頁面的某個地方指定HTML容器,然后在網站多個頁面中應用。找到@RenderBody() 行,RenderBody 是一個占位符,所有你使用了_layout.cshtml文件的視圖頁面會被顯示在這個地方,“包裝”在布局頁中。例如,如果你選擇About鏈接,視圖Views\Home\About.cshtml 將被繪制在 RenderBody  方法中。

修改布局模板中的ActionLink,將"Application name"改為"MVC Movie"。

代碼清單1:修改后的ActionLink

<div class="container">
    <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    @Html.ActionLink("MVC Movie", "Index", "Home", null, new { @class = "brand" })
    <div class="nav-collapse collapse">
        <ul class="nav">
            <li>@Html.ActionLink("Home", "Index", "Home")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>
            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
        </ul>
        @Html.Partial("_LoginPartial")
    </div>
</div>

用下面的標簽替換title元素的內容:

代碼清單2:修改后的title標簽

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - Movie App</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>

運行應用程序,現在已將變成“MVC Movie”了。單擊About鏈接,你會看到這個頁面也顯示“MVC Movie”。我們僅僅修改了布局模板,就為網站中的所有頁面換上了新的標題。

圖2:About頁面

image

現在讓我們來改變Index視圖中的title吧。

打開MvcMovie\Views\HelloWorld\Index.cshtml 。有兩個地方需要我們修改:瀏覽器標題欄中的文本,然后是次要的標題(<h2>元素)。你可以稍微修改一下代碼,這樣就可以看到哪些代碼影響了哪些部分。

代碼清單3:Index.cshtml

@{
    ViewBag.Title = "Movie List";
}

<h2>My Movie List</h2>

<p>Hello from our View Template!</p>

為了指明HTML顯示的標題,上面的代碼中設置了ViewBag對象(在Index.cshtml視圖模板中)的Title屬性。在布局模板中(Views\Shared\_Layout.cshtml )的<head>節點的<title>標簽使用了這個值。

代碼清單4:在布局頁總使用Title的值

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - Movie App</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>

使用這種ViewBag的方式,你可以很容易的在視圖模板和布局頁中之間傳遞參數。

運行應用程序,瀏覽http://localhost:xx/HelloWorld

圖3:在瀏覽器中查看修改后的HelloWorld頁面

image

注意這個頁面發生的變化:

瀏覽器標題、主標題、此標題都發生了改變(如果你沒有看到這些變化,可能是瀏覽器緩存了之前的內容,在瀏覽器中按CTRL+F5強制從刷新頁面)。瀏覽器標題使我們在Index.cshtml中傳遞給布局頁的參數,布局頁又加上了“- Movie App”部分。

通過這個例子你會看到,布局模板提供了一種簡單的修改應用程序中全部頁面的方式。

到目前為止,我們用到的少量數據(像上面例子中的“Hello from our View Template!”)都是硬編碼的。我們用到了MVC中的“V”(View)和“C”(Controller),但還沒用到過“M”(Model)。接下來我們就演練一下如何創建數據庫,並通過模型來獲取數據。

本文轉自起飛網,原文地址:http://www.qeefee.com/mvc/mvc-5-changing-views-and-layout-pages


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM