起飛網 ASP.NET MVC 5 學習教程目錄:
- 添加控制器
- 添加視圖
- 修改視圖和布局頁
- 控制器傳遞數據給視圖
- 添加模型
- 創建連接字符串
- 通過控制器訪問模型的數據
- 生成的代碼詳解
- 使用 SQL Server LocalDB
- Edit方法和Edit視圖詳解
- 添加查詢
- Entity Framework 數據遷移之添加字段
- 添加驗證
- Details 和 Delete 方法詳解
首先,你希望改變頁面頂部的“Application name”鏈接,這段文字在每個頁面都有,是公用的。盡管它出現在程序中的每個頁面,但實際上它只寫在一個地方。在解決方案資源管理器中找到 /Views/Shared 文件夾,打開_Layout.cshtml 文件。這個頁面叫做布局頁,放在所有頁面都能用的共享文件夾中。
圖1:_Layout.cshtml文件的位置
布局模板允許你在頁面的某個地方指定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頁面
現在讓我們來改變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頁面
注意這個頁面發生的變化:
瀏覽器標題、主標題、此標題都發生了改變(如果你沒有看到這些變化,可能是瀏覽器緩存了之前的內容,在瀏覽器中按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