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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二章指南(4.2)添加 Controller

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章指南(4.2)添加 Controller 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:Adding a controller
翻譯:婁宇(Lyrics)
校對:劉怡(AlexLEWIS)、何鎮汐、夏申斌、孟帥洋(書緣)

Model-View-Controller (MVC) 架構模式將一個應用程序分離成三個主要的組件:?Model、View 以及Controller 。 MVC 模式幫助你創建可測試的應用程序,比傳統的單塊應用程序更加容易維護和更新。基于 MVC 的應用程序包含:

  • Models:應用程序中用來表示數據的類,并使用驗證邏輯來執行該數據業務規則。通常,模型(Model)對象從數據庫查詢和存儲 Model 狀態。在本教程?Movie?模型(Model)從數據庫查詢電影數據用來顯示或更新。更新后的數據寫入 SQL Server 數據庫。

  • Views:視圖是顯示用戶界面(UI)的組件。通常,UI 用于顯示模型(Model)數據。

  • Controllers:一種類(Class),用于處理瀏覽器請求,查詢模型(Model)數據,以及將指定視圖模板作為響應返回給瀏覽器。在 MVC 應用程序中,視圖(View)僅僅顯示信息; 控制器(Controller)處理和響應用戶的輸入和交互。例如, 控制器(Controller)處理路由數據和查詢字符串值,然后將這些值傳遞給模型(Model),模型(Model)可以使用這些值去查詢數據庫。

MVC 模式幫助你創建一個分離不同方面的應用程序(輸入邏輯,業務邏輯,以及 UI 邏輯),同時這些元素之間是松耦合的。該模式指定在應用程序中的每一種邏輯應該位于何處。 UI 邏輯屬于視圖(View)。輸入邏輯屬于控制器(Controller)。業務邏輯屬于模型(Model)。當你構建一個應用程序時,這樣的分離幫助你管理應用程序的復雜性,因為它使你編寫一個方面的代碼時不會影響其他(方面)的代碼。比如,你可以編寫視圖(View)代碼而不需要依賴于業務邏輯代碼。

我們會在本系列教程中涵蓋所有這些概念,并告訴你如何使用它們構建一個簡單的電影應用程序。下面的圖片展示了 MVC 項目中的?Models?、?Views?以及?Controllers?文件夾。

  • 在?解決方案資源管理器(Solution Explorer)?中,鼠標右鍵點擊?Controllers > 添加(Add) > 控制器(Controller)

  • 在?添加基架(Add Scaffold)?對話框中

  • 點擊?MVC Controller - Empty

  • 點擊?添加(Add)

  • 命名控制器(Controller)為?HelloWorldController

  • 點擊?添加(Add)

用下面的代碼替換?Controllers/HelloWorldController.cs?中的內容:

using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers
{ ? ?
public class HelloWorldController : Controller{ ? ? ?
? ? ? ?// GET: /HelloWorld/public string Index() ? ? ? ?{ ? ? ? ?
? ? ? ?? ?return "This is my default action...";} ? ? ?
? ? ? ?? ?// GET: /HelloWorld/Welcome/ public string Welcome() ? ? ? ?{ ? ? ?
? ? ? ?? ? ? ? ?return "This is the Welcome action method...";}} }

控制器(Controller)的每個?public?方法都可作為 HTTP 端點。在上面的例子中,兩個方法都返回 string,注意它們的注釋:

public class HelloWorldController : Controller{ ? ?// // GET: /HelloWorld/ ?(手動高亮)public string Index() ? ?{ ? ? ? ?return "This is my default action...";} ? ?// // GET: /HelloWorld/Welcome/ ?(手動高亮)public string Welcome() ? ?{ ? ? ? ?return "This is the Welcome action method...";} }

第一條注釋指出這是一個通過在 URL 后添加 "/HelloWorld/" 調用的?HTTP GET?方法。第二條指出這是一個通過在 URL 后添加 "/HelloWorld/Welcome/" 調用的?HTTP GET?方法。之后的教程我們將使用基架引擎來生成?HTTP POST?方法。

使用非調試模式(Ctrl+F5)運行應用程序,并在瀏覽器地址欄路徑后添加 "HelloWorld" (在下面的圖片中,使用了?http://localhost:1234/HelloWorld?,但是你必須用你的應用程序端口替換?1234?)。?Index 方法返回一段字符串,系統將這段字符串轉換為 HTML 返回給瀏覽器。

MVC 調用的控制器(Controller)類 (以及它們的 Action 方法) 取決于傳入的 URL 。MVC 的默認路由邏輯采用類似下面規則格式來決定代碼的調用:

/[Controller]/[ActionName]/[Parameters]

你可以在?Startup.cs?文件中設置路由規則。

app.UseMvc(routes => {routes.MapRoute( ? ? ? ?name: "default", ? ? ?
? ? ? ?template:
"{controller=Home}/{action=Index}/{id?}"); ?
//(手動高亮)});

當你運行應用程序且不提供任何 URL 段時,它將默認訪問在上面模板中高亮行指定的 "Home" Controller 中的 "Index" Action 方法。

第一個 URL 段決定運行哪個控制器(Controller)。所以?localhost:xxxx/HelloWorld?映射到?HelloWorldController?類。URL 段的第二部分決定類里的 Action 方法。所以?localhost:xxxx/HelloWorld/Index?將運行?HelloWorldController?中的?Index?方法。請注意,我們只需要瀏覽?localhost:xxxx/HelloWorld,默認會調用?Index?方法。這是因為在沒有指定方法名時,?Index是默認方法。URL 段的第三部分 (?Parameters) 是路由數據。我們之后將在本教程中了解路由數據。

瀏覽?http://localhost:xxxx/HelloWorld/Welcome?。?Welcome?方法運行并返回 "This is the Welcome action method..." 。默認的 MVC 路由是?/[Controller]/[ActionName]/[Parameters]?。對于這個 URL , 控制器(Controller)是?HelloWorld?, Action 方法是?Welcome?。我們還沒有使用 URL 中的?[Parameters]?部分。

讓我們稍微修改一下例子,使我們能夠通過 URL 傳遞一些參數信息到控制器(Controller)(例如,?/HelloWorld/Welcome?name=Scott&numtimes=4?)。如下所示修改?Welcome?方法使其包含兩個參數。請注意,代碼利用 C# 的可選參數特性指明,在沒有傳遞參數的情況下,?numTimes?參數默認為1。

public string Welcome(string name, int numTimes = 1){ ?
?return HtmlEncoder.Default.Encode( ? ? ? ?"Hello " + name + ", NumTimes is: " + numTimes); }

警告
上面的代碼使用?HtmlEncoder.Default.Encode?來保護應用程序免受惡意輸入(即 JavaScript)。

警告
在 Visual Studio 2015 中,當你以非調試模式 (Ctl+F5) 運行,你不需要在修改代碼后生成應用程序。只需要保存文件,刷新你的瀏覽器就可以看到改變。

運行你的應用程序并瀏覽:

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

(用你的端口替換 xxxx。) 你可以在 URL 中對?name?和?numtimes?嘗試不同的值。 模型綁定系統自動將地址欄里查詢字符串中有名字的參數映射到你方法中的參數。查看 :doc:/mvc/models/model-binding?獲得更多的信息。

在上面的示例中, URL 段 (Parameters) 沒有被使用,?name?和?numTimes?參數作為?查詢字符串?被傳遞。 上面 URL 中的???(問號) 是一個分隔符,后面跟查詢字符串。?&?字符分割查詢字符串。

用下面的代碼替換?Welcome?方法:

public string Welcome(string name, int ID = 1){ ? ?return HtmlEncoder.Default.Encode( ? ? ? ?"Hello " + name + ", ID: " + ID); }

運行應用程序然后輸入 URL :?http://localhost:xxx/HelloWorld/Welcome/3?name=Rick

這次第三個 URL 段匹配上路由參數?id?。?Welcome?方法包含一個與?MapRoute?內的 URL 模板相匹配的?id?參數。跟隨的???(id?) 表示?id?參數是可選的。

app.UseMvc(routes => {routes.MapRoute( ? ? ? ?name: "default", ? ? ? ?template: "{controller=Home}/{action=Index}/{id?}"); ?//(手動高亮)});

在這些例子中,控制器(Controller)一直在做 MVC 中的 "VC" 部分,就是視圖(View)和控制器(Controller)部分的工作。這個控制器(Controller)直接返回 HTML 。一般來說你不想讓控制器(Controller) 直接返回 HTML ,因為這讓編碼和維護變得非常麻煩。所以,我們通常會使用一個單獨的 Razor 視圖模板文件來幫助生成 HTML 響應。 我們將在下一個教程中介紹這部分。

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


相關文章:

  • ASP.NET Core 1.0 入門——了解一個空項目

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

  • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡介

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

  • 使用VS Code開發ASP.NET Core 應用程序

  • dotnet run是如何啟動asp.net core站點的

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

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

  • 探秘 dotnet run 如何運行 .NET Core 應用程序

  • .NET Portability Analyzer 已開源

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

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

  • .NET Core 1.0 RC2 歷險之旅

  • 使用VS Code開發 調試.NET Core 應用程序

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

  • .NET Core VS Code 環境配置

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

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

  • 利用記事本創建一個ASP.NET Core RC2 MVC應用

  • 微軟.NET 正式劈腿成功,橫跨所有平臺

  • .NET Core 1.0 CentOS7 嘗試

  • 解讀發布:.NET Core RC2 and .NET Core SDK Preview 1

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

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

  • 結合Jexus + Kestrel 部署 asp.net core 生產環境

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

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

  • 用 Visual Studio Code 在 macOS 上創建首個 ASP.NET Core 應用程序

  • 用 Visual Studio 和 ASP.NET Core MVC 創建首個 Web API

  • 用 Visual Studio 發布一個 Azure 云 Web 應用程序

  • ASP.NET Core MVC 與 Visual Studio 入門


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


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注


贊賞

人贊賞

總結

以上是生活随笔為你收集整理的第二章指南(4.2)添加 Controller的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。