日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二章 指南(4.3)添加 View

發(fā)布時(shí)間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章 指南(4.3)添加 View 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文:Adding a view
作者:Rick Anderson
翻譯:魏美娟(初見)
校對(duì):趙亮(悲夢(mèng))、高嵩(Jack)、婁宇(Lyrics)、許登洋(Seay)、姚阿勇(Dr.Yao)

本節(jié)將修改 HelloWorldController 類,把使用 Razor 視圖模板文件為客戶端生成 HTML 響應(yīng)的過程干凈利落地封裝起來。

您可以使用 Razor 視圖引擎創(chuàng)建一個(gè)視圖模板。基于 Razor 的視圖模板的文件使用 .cshtml 作為其擴(kuò)展名,并用 C# 優(yōu)雅地輸出 HTML。用 Razor 編寫視圖模板能減少字符的個(gè)數(shù)和敲擊鍵盤的次數(shù),并使工作流程快速靈活。

目前,控制器類中的 Index 方法返回的是一串硬編碼的字符串。按下面的代碼所示,修改 Index 方法使其返回視圖對(duì)象:

public IActionResult Index(){ ? ?
? ? ? ? return View(); }

上例中 Index 方法用一個(gè)視圖模板生成 HTML 響應(yīng)給瀏覽器。控制器方法(也稱為 action 方法),比如上面的 Index 方法,通常返回 IActionResult (或者派生自 ActionResult 的類),而不是字符串那樣的基元類型。

  • 右擊 Views (視圖)文件夾,選擇 Add > New Folder (添加 > 新建文件夾),然后將文件夾命名為 HelloWorld.

  • 右鍵點(diǎn)擊 Views/HelloWorld (視圖/Helloworld)文件夾,選擇 Add > New Item (添加->新建項(xiàng))

  • Add New Item - MvcMovie (添加新建項(xiàng) - MvcMovie)對(duì)話框中:

  • 在右上方的搜索框中輸入關(guān)鍵詞 view

  • 點(diǎn)擊 MVC View Page (MVC 視圖頁)

  • Name (名稱)框中, 保持默認(rèn)的 Index.cshtml

  • 點(diǎn)擊 Add (添加)

用以下代碼替換 Razor 視圖文件 Views/HelloWorld/Index.cshtml :

@{ViewData["Title"] = "Index"; }<h2>Index</h2><p>Hello from our View Template!</p>

導(dǎo)航到 http://localhost:xxxx/HelloWorld。HelloWorldController 的 Index 方法只干一件事——運(yùn)行 return View(); 語句來引導(dǎo)控制器方法使用指定的視圖模板文件,為瀏覽器渲染最終的響應(yīng)結(jié)果。 因?yàn)闆]有明確指定所使用視圖模板的文件名,MVC 默認(rèn)使用 /Views/HelloWorld 文件夾中的 Index.cshtml 視圖文件。下圖顯示了在視圖中硬編碼的字符串 "Hello from our View Template!" 。

如果瀏覽器窗體比較小(比如在手機(jī)設(shè)備上),可能需要切換(點(diǎn)擊)右上方的 Bootstrap navigation button才能看到 HomeAboutContactRegisterLog in 這些鏈接。

改變視圖和布局頁

點(diǎn)擊菜單鏈接(MvcMovieHomeAbout)。每個(gè)頁面都顯示相同的菜單布局。菜單布局在 Views/Shared/_Layout.cshtml 文件中實(shí)現(xiàn)。打開 Views/Shared/_Layout.cshtml 文件。

Layout 模板允許你在一處指定網(wǎng)站的 HTML 容器布局,然后在網(wǎng)站下的多個(gè)頁面中使用。找到 @RenderBody() 那行。 RenderBody 是一個(gè)占位符,是你所有指定視圖的顯示位置,“包裹在”布局頁內(nèi)。例如,點(diǎn)擊 About 鏈接, Views/Home/About.cshtml 視圖就會(huì)在 RenderBody 方法內(nèi)渲染。

改變標(biāo)題元素的內(nèi)容。在布局模板中將錨(即 A 標(biāo)簽,譯者注)文本改成“MVC Movie”,控制器將 Home 改成 Movies ,如下列高亮顯示的:

<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>@ViewData["Title"] - Movie App</title> ? ?<!--手動(dòng)高亮--><environment names="Development"><link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /><link rel="stylesheet" href="~/css/site.css" /></environment><environment names="Staging,Production"><link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css" ? ? ? ? ? ? ?asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" ? ? ? ? ? ? ?asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" /><link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /></environment></head><body><div class="navbar navbar-inverse navbar-fixed-top"><div class="container"><div class="navbar-header"><button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a asp-controller="Movies" asp-action="Index" class="navbar-brand">Mvc Movie</a> ?<!--手動(dòng)高亮--></div><div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li><a asp-controller="Home" asp-action="Index">Home</a></li><li><a asp-controller="Home" asp-action="About">About</a></li><li><a asp-controller="Home" asp-action="Contact">Contact</a></li></ul>@await Html.PartialAsync("_LoginPartial") ? ? ? ? ? ?</div></div></div><div class="container body-content">@RenderBody() ? ? ? ?<hr /><footer><p>&copy; 2016 - MvcMovie</p></footer></div><environment names="Development"><script src="~/lib/jquery/dist/jquery.js"></script><script src="~/lib/bootstrap/dist/js/bootstrap.js"></script><script src="~/js/site.js" asp-append-version="true"></script></environment><environment names="Staging,Production"><script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js" ? ? ? ? ? ? ? ?asp-fallback-src="~/lib/jquery/dist/jquery.min.js" ? ? ? ? ? ? ? ?asp-fallback-test="window.jQuery"> ? ? ? ?</script><script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js" ? ? ? ? ? ? ? ?asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js" ? ? ? ? ? ? ? ?asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"> ? ? ? ?</script><script src="~/js/site.min.js" asp-append-version="true"></script></environment>@RenderSection("scripts", required: false)</body></html>

警告
我們尚未實(shí)現(xiàn) Movies 控制器,故若你點(diǎn)擊該鏈接,將會(huì)得到 404 錯(cuò)誤(文件未找到)。

保存,點(diǎn)擊 About 鏈接。注意每個(gè)頁面怎樣顯示 Mvc Movie 鏈接。只在布局模板中改變一次,網(wǎng)站中的所有頁面都顯示新的鏈接和新的標(biāo)題。

查看一下 Views/_ViewStart.cshtml 文件:

@{Layout = "_Layout"; }

Views/_ViewStart.cshtml 文件將 Views/Shared/_Layout.cshtml 文件引入每個(gè)視圖中。可以利用 Layout 屬性設(shè)置不同的布局視圖,或者將其設(shè)置成 null 這樣就不會(huì)使用布局視圖了。

現(xiàn)在,讓我們改變 Index 視圖的標(biāo)題。

打開 Views/HelloWorld/Index.cshtml 。這里有2個(gè)地方需要改變:

  • 出現(xiàn)在瀏覽器上的標(biāo)題文本

  • 二級(jí)標(biāo)題 (<h2> 元素).

你可以一點(diǎn)點(diǎn)改,這樣就可以看到哪些代碼改變了應(yīng)用程序的哪些地方。

@{ViewData["Title"] = "Movie List"; ?//手動(dòng)高亮 }<h2>My Movie List</h2> ?<!--手動(dòng)高亮--><p>Hello from our View Template!</p>

在以上代碼中 ViewData["Title"] = "Movie List"; 將 ViewDataDictionary 的 Title 屬性設(shè)置為 "Movie List"。Title 屬性被用在布局頁的 <title> Html元素中:

<title>@ViewData["Title"] - Movie App</title>

保存并刷新頁面。注意瀏覽器標(biāo)題、主標(biāo)題和副標(biāo)題都變化了(如果你沒看到變化,可能因?yàn)榫彺娴木壒?#xff0c;在瀏覽器中按下 Ctrl+F5 強(qiáng)制刷新)。瀏覽器標(biāo)題由我們?cè)O(shè)置在 Index.cshtml 視圖模板中的 ViewData["Title"] 以及位于布局頁的 "- Movie App" 組合構(gòu)成。

同時(shí)注意,Index.cshtml 視圖模板的內(nèi)容是怎樣和 Views/Shared/_Layout.cshtml 視圖模板合并的,和一個(gè)HTML響應(yīng)是怎樣被發(fā)送到瀏覽器的。布局模板非常易于進(jìn)行作用于應(yīng)用程序中所有頁面的修改。了解更多請(qǐng)參考 : Layout。

不過,我們的這點(diǎn)“數(shù)據(jù)”(本例中的消息 "Hello from our View Template!")還是硬編碼的。MVC 應(yīng)用程序里已經(jīng)有了個(gè)“V”(View),我們也已經(jīng)創(chuàng)建了一個(gè)“C”(Controller),但現(xiàn)在還沒有“M”(Model)。接下來我們將快速展示如何創(chuàng)建數(shù)據(jù)庫并從中搜索模型數(shù)據(jù)。

從控制器傳遞數(shù)據(jù)到視圖

在談到數(shù)據(jù)庫和模型之前,讓我們先討論從控制器傳遞信息到視圖。控制器類在響應(yīng)傳入的 URL 請(qǐng)求時(shí)被調(diào)用。控制器類是編寫代碼處理傳入的瀏覽器請(qǐng)求,從數(shù)據(jù)庫中檢索數(shù)據(jù),并最終決定發(fā)送什么類型的響應(yīng)返回給瀏覽器的地方。然后可以在控制器中使用視圖模板生成和格式化 HTML 來響應(yīng)給瀏覽器。

控制器負(fù)責(zé)提供所需要的任何數(shù)據(jù)或者對(duì)象,以便視圖模板向?yàn)g覽器呈現(xiàn)響應(yīng)。最佳實(shí)踐:視圖模板不應(yīng)該執(zhí)行業(yè)務(wù)邏輯或者直接與數(shù)據(jù)庫進(jìn)行交互,而應(yīng)該只使用控制器提供給它的數(shù)據(jù)。保持這種 “關(guān)注點(diǎn)分離” 有助于保持你的代碼整潔,可測(cè)試以及更易于維護(hù)。

目前,HelloWorldController 類中的 Welcome 方法接受一個(gè) name 和一個(gè) ID 參數(shù),然后直接將值輸出到瀏覽器。讓我們更改控制器來使用視圖模板,而不是讓控制器使用字符串呈現(xiàn)這個(gè)響應(yīng)。視圖模板將生成一個(gè)動(dòng)態(tài)響應(yīng),這就意味著需要通過控制器傳遞恰當(dāng)?shù)臄?shù)據(jù)給視圖以生成響應(yīng)。要做到這一點(diǎn),可以讓控制器將視圖模板所需的動(dòng)態(tài)數(shù)據(jù)(參數(shù))放在視圖模版隨后可以訪問的 ViewData 字典中。

回到 HelloWorldController.cs 文件,在 Welcome 方法中添加一個(gè) Message 和 NumTimes 的值到 ViewData 字典中。 ViewData 字典是個(gè)動(dòng)態(tài)對(duì)象,這意味著可以把任何你想要的數(shù)據(jù)添加進(jìn)去。在你往里面添加?xùn)|西之前,ViewData 對(duì)象沒有已定義的屬性。MVC 模型綁定系統(tǒng)自動(dòng)映射地址欄中查詢字符串的命名參數(shù)(name 和 numTimes)到你的方法參數(shù)中。完整的 HelloWorldController.cs 文件看起來是這樣的:

using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;

namespace MvcMovie.Controllers{ ? ?
public class HelloWorldController : Controller{ ? ? ? ?public IActionResult Index() ? ? ? ?{ ? ? ? ? ? ?return View();} ? ? ? ?public IActionResult Welcome(string name, int numTimes = 1) ? ? ? ?{ViewData["Message"] = "Hello " + name;ViewData["NumTimes"] = numTimes; ? ? ? ? ? ?return View();}} }

ViewData 字典對(duì)象包含將要傳遞給視圖的數(shù)據(jù)。下一步,需要一個(gè) Welcome 的視圖模板。

  • 右鍵點(diǎn)擊 Views/HelloWorld 文件夾,點(diǎn)擊 Add > New Item (添加 > 新建項(xiàng))。

  • Add New Item - MvcMovie (添加新項(xiàng) - MvcMovie)對(duì)話框中

  • 在右上角的搜索框中輸入關(guān)鍵詞 view

  • 點(diǎn)擊 MVC View Page (MVC 視圖頁)

  • Name (名稱)框中,輸入 Welcome.cshtml

  • 點(diǎn)擊 Add (添加)

在 Welcome.cshtml 視圖模板中創(chuàng)建一個(gè)循環(huán)來顯示 "Hello" NumTimes。用以下代碼完全替換 Views/HelloWorld/Welcome.cshtml 中的內(nèi)容:

@{ViewData["Title"] = "About"; }<h2>Welcome</h2><ul>@for (int i = 0; i < (int)ViewData["NumTimes"]; i++) ? ?{ ? ? ? ?<li>@ViewData["Message"]</li>}</ul>

保存修改并打開瀏覽器,訪問這個(gè)地址:

http://localhost:xxxx/HelloWorld/Welcome?name=Rick&numtimes=4

數(shù)據(jù)從 URL 中獲取并用模型綁定器將數(shù)據(jù)傳遞給控制器。控制器將數(shù)據(jù)封裝到 ViewData 字典中,并將對(duì)象傳遞到視圖里。然后,視圖將數(shù)據(jù)以 HTML 的形式渲染到瀏覽器中。

在上面的例子中,我們用 ViewData 字典將數(shù)據(jù)從控制器傳遞到視圖中。在后面的教程中,我們將使用視圖模型(View Model)將數(shù)據(jù)從控制器傳遞到視圖中。用視圖模型傳遞數(shù)據(jù)的方法通常比 ViewData 字典的方式更受歡迎。查看 Dynamic V Strongly Typed Views 了解更多信息。

好吧,這也算是一種 Model 中的“M”吧,但無論如何都不是數(shù)據(jù)庫模型。讓我們用學(xué)到的東西創(chuàng)建一個(gè)電影數(shù)據(jù)庫吧。


由于水平有限,錯(cuò)漏之處在所難免,歡迎大家批評(píng)指正,不勝感激,我們將及時(shí)修正。
dotNet Core Studying Group:436035237


相關(guān)文章:

  • ASP.NET Core 1.0 入門——了解一個(gè)空項(xiàng)目

  • ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

  • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡(jiǎn)介

  • 云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)

  • 使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序

  • dotnet run是如何啟動(dòng)asp.net core站點(diǎn)的

  • ASP.NET Core提供模塊化Middleware組件

  • “dotnet restore"和"dotnet run"都做了些什么?

  • 探秘 dotnet run 如何運(yùn)行 .NET Core 應(yīng)用程序

  • .NET Portability Analyzer 已開源

  • ASP.NET Core的配置(1):讀取配置信息

  • ASP.NET Core的配置(2):配置模型詳解

  • .NET Core 1.0 RC2 歷險(xiǎn)之旅

  • 使用VS Code開發(fā) 調(diào)試.NET Core 應(yīng)用程序

  • 讓我們Core在一起:ASP.NET Core & .NET Core

  • .NET Core VS Code 環(huán)境配置

  • 官方博客明確了 .NET Core RC2/RTM 時(shí)間表

  • .NET Core全新的配置管理[共9篇]

  • 利用記事本創(chuàng)建一個(gè)ASP.NET Core RC2 MVC應(yīng)用

  • 微軟.NET 正式劈腿成功,橫跨所有平臺(tái)

  • .NET Core 1.0 CentOS7 嘗試

  • 解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1

  • [.NET Core].NET Core R2安裝及示例教程

  • ASP.NET Core 開發(fā)-中間件(Middleware)

  • 結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境

  • 通過Jexus 部署 dotnetcore版本MusicStore 示例程序

  • ASP.NET Core 中文文檔 第一章 入門

  • 用 Visual Studio Code 在 macOS 上創(chuàng)建首個(gè) ASP.NET Core 應(yīng)用程序

  • 用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個(gè) Web API

  • 用 Visual Studio 發(fā)布一個(gè) Azure 云 Web 應(yīng)用程序

  • ASP.NET Core MVC 與 Visual Studio 入門

  • 第二章指南(4.2)添加 Controller

  • DotNet Core 介紹


原文地址:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-2_4_3-adding-view.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的第二章 指南(4.3)添加 View的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。