整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Mvc-AspNet Mvc選擇題(50題)

          spNet Mvc選擇題-50題,答案在末尾

          第3階段

          2021級.NET大三階段清考 測試試題


          1、關于Asp.NET MVC 目錄結構下列說法正確的是?【多選題】(2分)

          A、App_Data存儲本地化的數據庫文件或數據文件。

          B、App_Start 包含多個靜態配置類,執行初始化任務。

          C、Models放置模型文件。

          D、Global.asax:應用程序配置文件。


          2、在ASP.NET MVC中,以下關于控制器的說法錯誤的是?(2分)

          A、控制器類名必須由Controller結尾

          B、控制器類名可以自定義結尾

          C、控制器的父類是Controller類

          D、控制器至少有一個返回值為ActionResult的public方法


          3、關于Asp.NET MVC 模板頁面下列說法正確的是?【多選題】(2分)

          A、Asp.NET MVC 模板頁名稱為Site.Master

          B、@RenderBody起到占位符作用,而且只能有一個。

          C、@RenderSection 是塊占位符,可以有多個。

          D、母版頁所在位置為/Views/Shared目錄下,名稱為_Layout.cshtml


          4、在ASP.NET MVC中,下列關于ViewData對象說法錯誤的是?(2分)

          A、ViewData對象實際上是ControllerBase類中的一個屬性。

          B、ViewData對象本身是一個字典結構類型。

          C、ViewData屬性中的值在多次請求過程中,會保存所有數據。

          D、ViewData只在一次Http請求中有效,下一次請求會清空內容。


          5、在ASP.NET MVC中,關于以下代碼,說法錯誤的是?

          [HttpPost]

          public ActionResult Index(string uname,int? uage){

          return View();

          }(2分)

          A、通過點擊超鏈接會訪問該Action方法。

          B、該方法必須是Post請求才可以處理。

          C、頁面中表單元素的name值需要和參數名稱對應。

          D、int?參數表示可以為int類型,也可以為空類型。


          6、在Asp.NET MVC中如何獲取上傳文件保存路徑?(2分)

          A、通過File類獲取磁盤路徑。

          B、通過Server.MapPath()獲取服務器路徑。

          C、通過Directory獲取磁盤目錄。

          D、直接使用絕對路徑。


          7、在ASP.NET MVC中,默認的模型綁定器獲取綁定數據的途徑有哪些?【多選題】(2分)

          A、Request.Form獲取表單提交的值

          B、RouteData.Values獲取路由的值。

          C、Request.QueryString獲取URL的值。

          D、Request.Directory獲取上傳文件


          8、在ASP.NET MVC中,下列關于Html輔助方法說法正確的是?【多選題】(2分)

          A、Html輔助方法用于輔助產生Html的系統方法。

          B、HTML輔助方法能夠幫助產生HTML標簽和內容,提高開發速度避免語法錯誤。

          C、框架定義的大多數輔助方法都是擴展方法。

          D、輔助方法開發難度較大,不利于代碼開發和維護。


          9、在ASP.NET MVC中,對以下代碼生成的HTML代碼,分析正確的是?

          @Html.ActionLink("鏈接文字","Upload",new {id=123,page=5})(2分)

          A、<a href="/Upload">鏈接文字</a>

          B、<a href="/Home/Upload">鏈接文字</a>

          C、<a href="/Home/Upload/123?page=5">鏈接文字</a>

          D、<a href="/Home/Upload?id=123&page=5">鏈接文字</a>


          10、在ASP.NET MVC中,以下對于強類型理解錯誤的是?(2分)

          A、強類型即在變量定義時已明確指定其類型,最典型的應用是結合視圖。

          B、強類型的使用可以提高開發視圖的效率和準確性。

          C、@model關鍵字指定屬性Property的值。

          D、Razor視圖可以智能感知,可直接訪問強類型對象的屬性。


          11、在ASP.NET MVC中,關于 Ajax.ActionLink方法用法理解錯誤的是?(2分)

          A、可以創建一個具有異步行為的超鏈接。

          B、ActionLink方法的第一個參數是超鏈接的文本,第二個參數是操作方法的名稱。

          C、AjaxOptions對象能夠配置對服務器的異步請求,但無法處理返回的數據。

          D、ActionLink方法可以通過設置AjaxOptions對象的屬性值來調整Ajax請求的行為。


          12、在ASP.NET MVC中,下列關于 AjaxOptions對象說法正確的是?【多選題】(2分)

          A、HttpMethod 獲取或設置HTTP請求方法(“GET”或“POST”)

          B、OnComplete 獲取或設置數據響應之后、更新頁面之前,調用的JavaScript函數。

          C、OnBegin 獲取或設置更新頁面之前調用的JavaScript函數的名稱。

          D、InsertionMode 獲取或設置指定如何將響應結果插入到目標DOM元素的模式。


          13、Web API的使用場景有哪些?【多選題】(2分)

          A、需要Web Service但是不需要SOAP。

          B、只想發布一些簡單的Http服務,不想使用相對復雜的WCF配置。

          C、發布的服務可能會被帶寬受限的設備訪問。

          D、需要在已有的WCF服務基礎上建立non-soap-based http服務。


          14、Asp.NET MVC中Session默認有效期是多長時間?(2分)

          A、5分鐘 B、10分鐘

          C、20分鐘 D、30分鐘


          15、MVC與webform相比有什么優勢?【多選題】(2分)

          A、強類型view實現,更安全,更高效。

          B、使Web程序對單元測試的支持更加出色

          C、沒有服務器表單控件,可以更方便的控制應用程序的行為

          D、通過把項目分成Model、View和Controller,使得復雜項目更加容易維護,減少項目之間的耦合。


          16、下列哪些屬于MVC過濾器的是?【多選題】(2分)

          A、ActionFilter B、ResultFilter

          C、AuthorizationFilter D、ExceptionFilter


          17、在ASP.NET MVC中,如果想讓視圖顯示為指定中文,要改變哪個屬性的值?(2分)

          A、[Display] B、[Required]

          C、[StringLength] D、[Range]


          18、在ASP.NET MVC中,強類型輔助方法Html.ListBoxFor()

          輸出的標簽是?

          (2分)

          A、輸出<textarea/>標簽


          B、輸出<select>標簽


          C、輸出<input type="checkbox">標簽


          D、輸出<select multiple />標簽



          19、在ASP.NET MVC中,Html.DisplayTextFor()的作用是?(2分)

          A、根據提供的數據類型生成相應<input>標簽(模板型方法)


          B、根據提供的數據類型輸出相應顯示內容(模板型方法)


          C、顯示數據模型的文字資料


          D、顯示數據模型輸入驗證失敗時的錯誤信息



          20、在ASP.NET MVC中,AjaxOptions對象中的InsertionMode

          方法作用是?(2分)

          A、獲取或設置提交請求之前,顯示在確認窗口中的消息


          B、獲取或設置HTTP請求方法(“GET”或“POST”)


          C、獲取或設置指定如何將響應結果插入到目標DOM元素的模式


          D、獲取或設置加載時要顯示的HTML元素的id屬性值



          21、關于HTTP動詞Get下面說法不正確的是?(2分)

          A、很安全,因為其只查詢而不修改數據

          B、按HTTP/1.1規定,有標頭,也有文本

          C、一般用于獲取查詢資源,對應數據庫中的Select操作

          D、使用Get動詞獲取URI資源的具像


          22、在ASP.NET MVC中,判斷模型綁定的驗證結果,可以通過以下哪個對象進行判斷?:(2分)

          A、Model B、State

          C、ModelState D、Session


          23、在ASP.NET MVC中,以下哪個是jQuery驗證插件?(2分)

          A、.validate B、.val

          C、.date D、.ajax


          24、在ASP.NET MVC中,什么是強類型HTML輔助方法?(2分)

          A、通過類表達式來引用傳遞到視圖中的模型對象

          B、通過Lambda表達式來引用傳遞到視圖中的模型對象

          C、通過數學表達式來引用傳遞到視圖中的模型對象

          D、通過文字表達式表達式來引用傳遞到視圖中的模型對象


          25、在ASP.NET MVC中,下列模型數據注解中用于驗證屬性值必須匹配正則表達式的API是(???? )。(2分)

          A、A. Required

          B、B. Range

          C、C. RegularExpression

          D、D. Compare


          26、MVC優點有哪些?【多選題】(2分)

          A、A.通過把項目分成model view和controller,使得復雜項目更加容易維護。

          B、B.沒有使用view state和服務器表單控件,可以更方便的控制應用程序的行為

          C、C.在團隊開發模式下表現更出眾

          D、D.應用程序通過controller來控制程序請求,可以提供豐富的url重寫


          27、ASP.NET MVC提供過濾器來處理這些需求,支持的過濾器類型有4種,其中()用于限制執行控制器或控制器的某個操作方法(2分)

          A、A.Authorization B、B.Exception

          C、C.Action D、D.Result


          28、關于ASP.NET和ASP.NET MVC的關系,描述錯誤的是()?(2分)

          A、A.ASP.NET MVC依賴于HttpHandler,關于請求是怎么進入控制器的,其實就是用到了HttpHandler

          B、B.Session、Cookie、Cache和Application這些ASP.NET的對象保存機制在MVC中依然是需要用到的

          C、C.HttpContext、Request、Response、Server對象在MVC中仍然可以使用,在Controller中通過智能感知的形式很容易得到這些對象

          D、D.ASP.NET 是在核心ASP.NET MVC基礎之上構建的


          29、在ASP.NET MVC中,一個視圖是否能在多個controller中分享?(2分)

          A、A.不確定。

          B、B.不可以

          C、C.可以, 把這個視圖放在一個shared的文件夾里面。當我們在創建一個新的mvc工程的時候,這個layout page就會被添加在分享的文件夾里面因為他會被多個子頁面調用。

          D、D.有時可以,有時不可以


          30、在數據上下文中DbContext中有一個Database屬性,Database屬性中有兩組方法,即( )和( )【多選題】(2分)

          A、ExecuteCommand B、ExecuteSqlCommand

          C、 SqlQuery D、ExecuteQuery


          31、HttpModule中哪個方法在請求處理之前附加信息(2分)

          A、Init()

          B、Dispose()

          C、context_BeginRequest(object sender,EventArgs e)

          D、context_EndRequest(object sender,EventArgs e)


          32、XMLHttpRequest是()內置對象,開發AJAX前必須創建該對象。(2分)

          A、C# B、ASP

          C、JavaScript D、Xml


          33、下列安裝Vue的方式正確的是(2分)

          A、<script href=“js/vue.min.js"></script>

          B、<link src=“js/vue.min.js"></ link >

          C、< link src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></ link>

          D、<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>


          34、在Vue中,使用語法糖簡化了組件注冊,但是會導致(2分)

          A、只能全局注冊組件 B、只能局部注冊組件

          C、HTML和JavaScript的解耦 D、HTML和JavaScript的高耦合


          35、在Vue中,以下有關子組件正確的是(2分)

          A、子組件以子標簽的形式在父組件中使用 B、子組件只能在父組件中使用

          C、子組件可以再父組件標簽外使用 D、子組件可以在父組件的每個選項中使用


          36、根據選擇的測試策略的不同,可以將軟件測試分為黑盒測試和白盒測試兩種,其中()不屬于黑盒測試方法(2分)

          A、條件覆蓋 B、等價類劃分

          C、邊界值分析 D、因果圖


          37、在Vue中,使用v-bind指令綁定類屬性有兩種語法是【多選題】(2分)

          A、對象語法 B、實例語法

          C、集合語法 D、數組語法


          38、已知:打招呼的委托名為TranslationDelegate,已知打招呼的委托方法void ChineseSayHello(),以下關于實列化委托說法錯誤的是:(2分)

          A、TranslationDelegate td = new TranslationDelegate (ChineseSayHello)

          B、TranslationDelegate td=ChineseSayHello

          C、TranslationDelegate td = TranslationDelegate (ChineseSayHello)

          D、以上答案都錯誤


          39、在新建的MVC項目的“App_Start\RoutConfig.cs”文件中,( )方法注冊了默認的路由配置。(2分)

          A、A.RegisterRoutes B、B.Application_Start

          C、C.EnrollRoutes D、D.WriteRoutes


          40、在ASP.NET MVC中,模型注解驗證中,驗證數值范圍為10-20,以下正確的是?(2分)

          A、A. StringLength(10,20)

          B、B. Range(10.20)

          C、C. RegularExpression

          D、D. Compare("10")


          41、MVC優點有哪些?【多選題】(2分)

          A、使得復雜項目更加容易維護 B、可以更方便的控制應用程序的行為

          C、可以提供豐富的url重寫。 D、在團隊開發模式下表現更出眾


          42、在ASP.NET MVC中,定義一個新的路由規則,要修改哪個方法?(2分)

          A、RegisterRoutes() B、NewRoutes()

          C、CreateRoutes() D、DeafultRoutes()


          43、在ASP.NET MVC中,若使用支架模板完成用戶信息管理,以下為編輯用戶視圖的是? (2分)

          A、Index.cshtml B、Edit.cshtml

          C、Delete.cshtml D、Details.cshtml


          44、在ASP.NET MVC中,模型數據注解的命名空間是?(2分)

          A、System.ComponentModel.DataAnnotations

          B、System.Data.DataAnnotations

          C、System.IO.DataAnnotations

          D、System.Sql.DataAnnotations


          45、關于MVC下列說法錯誤的是____(2分)

          A、ASP.NET MVC中View默認放在Views目錄下面,也可以是其他目錄

          B、ASP.NET MVC中Model必須放在Models目錄下面

          C、ASP.NET MVC中腳本文件必須放在Scripts目錄下面

          D、ASP.NET MVC中Controller默認必須放在Controllers目錄下面


          46、在ASP.NET MVC中,下列關于Ajax.BeginForm 理解錯誤的是?(2分)

          A、Html.BeginForm用于創建普通的表單標簽。

          B、Ajax.BeginForm方法創建的是異步表單。

          C、提交到當前頁面,提交方式為Post,異步更新模塊ID為UserLogOnContainer 的定義如下:

          Ajax.BeginForm( new AjaxOptions{

          UpdateTargetId = "UserLogOnContainer",

          HttpMethod = "Post",

          OnSuccess = " "})


          D、提交到指定控制器下的操作方法,提交方式為Post,異步更新模塊ID為UserLogOnContainer,定義如下:

          Ajax.BeginForm("controller", "action", null, new AjaxOptions{

          UpdateTargetId = "UserLogOnContainer",

          HttpMethod = "Post",

          OnSuccess = " "})



          47、在ASP.NET MVC中,選項中哪個輔助方法可以生成如下代碼?

          <select></select>(2分)

          A、Html.Select() B、Html.CheckBox()

          C、Html.TextBox() D、Html.DropDownList()


          48、在ASP.NET MVC中,模型綁定可以獲取哪些基本類型的數據?【多選題】(2分)

          A、int B、string

          C、double D、float


          49、在ASP.NET MVC的控制器中,存在以下代碼:

          public ActionResult Index(){

          ViewBag.Name = "zhangsan";

          TempData["Age"] = 20;

          return View();

          }

          則以下說法正確的是?(2分)

          A、Index.cshtml頁面無法獲取到姓名Name信息。

          B、Abount.cshtml頁面可以獲取到姓名Name信息。

          C、Index.cshtml頁面無法獲取到年齡Age信息。

          D、Abount.cshtml頁面可以獲取到年齡Age信息。


          50、在ASP.NET MVC中,以下代碼說法錯誤的是?

          routes.MapRoute(

          name: "Default",

          url: "{controller}/{action}/{id}",

          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

          );(2分)

          A、訪問首頁時,完整路徑為"http://域名/Default/Index"

          B、該配置所在文件路徑為:/App_Start/RouteConfig.cs

          C、訪問:http://域名/Home/Add時,調用的是Add方法

          D、id在url請求過程中可以省略。


          答案如下:

          SP.NET Core MVC是一個來自微軟的Web應用程序開發框架,它結合了模型-視圖-控制器(MVC)體系結構的有效性和整潔性、敏捷開發的想法和技術,以及.NET平臺的最佳部分。

          1.1 ASP.NET Core MVC的歷史

          最早的ASP.NET是在2002年推出的,當時微軟熱衷于保護其在傳統桌面應用程序開發中的主導地位,并將互聯網視為威脅。圖1-1說明了當時出現的ASP.NET Web Forms技術棧。

          圖1-1 ASP.NET Web Forms技術棧

          1.1.1 ASP.NET Web Forms

          微軟試圖使用ASP.NET Web Forms將用戶界面(User Interface,UI)模擬為服務器端控件對象層,隱藏超文本傳輸協議HTTP(本身是無狀態的)和超文本標記語言HTML(當時許多開發人員對此還不熟悉)。每個控件在請求之間保持自己的狀態,在需要時自動渲染為HTML,并將客戶端事件(如按鈕單擊)與服務器端相應的事件處理程序代碼相關聯。實際上,Web窗體是一個巨大的抽象層,旨在通過Web傳遞經典的事件驅動的圖形用戶界面(Graphics User Interface,GUI)。

          其思想是使Web開發的體驗與開發桌面應用程序一致。開發人員可以基于有狀態的用戶界面進行考慮,而無須使用一系列獨立的HTTP請求和響應。微軟可以使Windows桌面開發人員向新型Web應用程序開發領域實現無縫轉型。

          ASP.NET Web Forms存在的問題

          傳統的ASP.NET Web Forms開發從原則上來說曾經很好,但事實證明它更加復雜。

          • View State權重:跨請求維護狀態的實際機制(稱為“View State”)導致在客戶端和服務器之間傳輸大量數據。即使是大小適中的Web應用程序,這些數據也可能會達到幾百千字節,并且每次請求都會來回傳遞數據,從而導致響應時間更慢,并增加了服務器的帶寬需求。
          • 頁面生命周期:連接客戶端事件與服務器端事件處理程序代碼(頁面生命周期的一部分)的機制可能會變得復雜和棘手。很少有開發人員在不產生View State錯誤或發現某些事件處理程序莫名失敗的情況下,能在運行時成功操縱控件層。
          • 關注點分離的錯誤理念:ASP.NET Web Forms的代碼隱藏模型提供了將應用程序代碼從HTML標記中移除到單獨的代碼隱藏類中的方法。這是為了分離邏輯層和表現層,但實際上,又鼓勵開發人員將表現層代碼(如操縱服務器端控件樹)與其應用程序邏輯(如操縱數據庫數據)混在這些怪異的后臺代碼類中。最終的結果可能是難以理解的。
          • 對HTML的有限控制:服務器控件將其自身呈現為HTML,但不一定是你想要的HTML。在ASP.NET的早期版本中,HTML輸出無法符合Web標準,或者不能很好地利用層疊樣式表(CSS),并且服務器控件生成難以預測且復雜的ID屬性,這些屬性難以使用JavaScript訪問。這些問題在最近的ASP.NET Web Forms版本中有所改進,但是獲取你期望的HTML仍然是比較困難的。
          • 有漏洞的抽象:ASP.NET Web Forms盡可能隱藏HTML和HTTP。當你嘗試實現自定義行為時,你經常會放棄抽象,這迫使你對回發事件機制進行逆向工程,或執行笨拙的操作以使其生成所需的HTML。
          • 低可測試性:ASP.NET Web Forms的設計人員無法預料到自動測試將成為軟件開發的重要組成部分。他們設計的緊密耦合架構不適合單元測試。集成測試也可能是一個挑戰。

          ASP.NET Web Forms并非一無是處,實際上,微軟為提高標準合規性和簡化開發流程付出了巨大的努力,甚至從原始的ASP.NET MVC框架中獲取了一些功能,并將其應用于ASP.NET Web Forms。當你需要快速的結果時,ASP.NET Web Forms表現優異,你可以在一天內擁有一個相當復雜的Web應用程序。但除非你在開發過程中足夠小心,否則你會發現你創建的應用程序難以測試和維護。

          1.1.2 起初的MVC框架

          2007年10月,微軟發布了一個基于現有ASP.NET平臺的新開發平臺,旨在直接回應對ASP.NET Web Forms的批評和競爭平臺(如Ruby on Rails)的普及。新平臺稱為ASP.NET MVC框架,并反映了Web應用程序開發的新興趨勢,如HTML和CSS標準化、REST Web服務、有效的單元測試以及開發人員應該接受HTTP的無狀態特性的想法。

          支持最初MVC框架的概念現在看起來很自然而且顯而易見,但是它們在2007年的.NET Web開發世界中是缺乏的。ASP.NET MVC框架的引入使微軟的Web開發平臺重新回到了現代。

          MVC框架還表明微軟的態度發生了重大變化,微軟以前曾試圖控制Web應用程序工具鏈中的每個組件。現在微軟基于jQuery等開源工具構建了MVC框架,從競爭(并且更為成功的)平臺中獲得了設計約定和最佳實踐,并將源代碼發布到MVC框架,供開發人員審查。

          起初的MVC框架存在的問題

          微軟在創建MVC框架時,基于現有的ASP.NET平臺,這是有道理的,因為該平臺具有很多固有的底層特性,ASP.NET開發人員都熟知和理解這些特性。

          但是,將MVC框架移植到最初為ASP.NET Web Forms設計的平臺上是需要妥協的。MVC框架開發人員逐漸喜歡使用配置設置和代碼調整,來禁用或重新配置對Web應用程序沒有任何影響但對整個程序正常工作來說必需的特性。

          隨著MVC框架的普及,微軟開始將一些核心功能添加到ASP.NET Web Forms中。結果越來越不相匹配,其中需要用來支持MVC框架的獨特設計特性被擴展到支持ASP.NET Web Forms,卻為了讓所有的東西融合在一起而讓設計變得更加不相匹配。同時,微軟開始使用創建Web服務(Web API)和實時通信(SignalR)的新框架來擴展ASP.NET。新的框架添加了自己的配置和開發約定,每個都有自己的優點和特異之處,結果導致了零亂的混亂狀態。

          1.2 ASP.NET Core

          2015年,微軟公布了ASP.NET和MVC框架的新方向,也就是本書要討論的主題ASP.NET Core MVC。

          ASP.NET Core基于.NET Core構建,它是.NET Framework的跨平臺版本,沒有Windows平臺特定的應用程序編程接口(Application Programming Interface,API)。雖然Windows仍然是主要的操作系統,但Web應用程序越來越多地托管在云平臺的小型而簡單的容器中,并且通過采用跨平臺方法,微軟擴展了.NET的覆蓋面,使得ASP.NET Core應用程序能夠部署到更廣泛的托管環境中。另外,ASP.NET Core還有一個額外的優點——開發人員可以在Linux系統和macOS上創建ASP.NET Core Web應用程序。

          ASP.NET Core是一個全新的框架。它更簡單、更容易處理,并且沒有來自ASP.NET Web Forms的遺留問題。另外,由于它基于.NET Core,因此它支持在一系列平臺和容器上進行Web應用程序開發。

          ASP.NET Core MVC提供了基于新的ASP.NET Core平臺構建的初始ASP.NET MVC框架的功能。它集成了以前由Web API提供的功能,能以更自然的方式生成復雜內容,并且使關鍵開發任務(如單元測試)更簡單。

          1.2.1 ASP.NET Core MVC 2的新特性

          ASP.NET Core MVC 2的發布版本重點關注整合,它在早期版本中引入了一些工具和平臺變更。ASP.NET Core MVC 2需要.NET Core 2,它具有很多擴展的API,現已在其他Linux發行版上受到支持。有用的變化包括一個新的元數據包系統(它簡化了NuGet包的管理),一個新的ASP.NET Core配置系統,以及對Entity Framework Core 2的支持。最重要的新功能是Razor Pages,它嘗試重新構建應用,并使用更現代的平臺創建與Web Pages相關的開發風格,但MVC開發人員對Razor Pages并不感興趣(因而在本書中沒有描述)。

          1.2.2 ASP.NET Core MVC的主要優點

          本節將簡要介紹新的MVC平臺如何克服ASP.NET Web Forms和初始MVC框架的遺留問題,以及如何完善ASP.NET。

          1.MVC架構

          ASP.NET Core MVC遵循稱為模型-視圖-控制器(MVC)的模式,指導ASP.NET Web應用程序及其包含的組件之間的交互。

          區分MVC架構模式和ASP.NET Core MVC實現很重要。MVC模式并不新穎,它可以追溯到1978年Xerox PARC的Smalltalk項目,但是它作為Web應用程序的一種開發模式,已經得到了廣泛普及,原因如下。

          • 用戶與遵守MVC模式的應用程序進行交互是遵循自然循環的。用戶執行一個動作,應用程序進行響應,更改其數據模型并向用戶傳遞更新的視圖。然后重復這一循環。這對作為一系列HTTP請求和響應來傳輸的Web應用程序來說非常合適。
          • Web應用程序需要組合幾種技術(例如數據庫、HTML和可執行代碼等),通常分為一系列層次。這些組合產生的模式會自然地映射到MVC模式的概念上。

          ASP.NET Core MVC實現了MVC模式,與ASP.NET Web Forms相比,ASP.NET Core MVC極大改善了關注點的分離。實際上,ASP.NET Core MVC實現了MVC模式的變體,特別適用于Web應用程序。你將在第3章中更多地了解此架構的理論和實踐。

          2.可擴展性

          ASP.NET Core和ASP.NET Core MVC已構建為一系列具有明確特征的獨立組件,能滿足.NET接口的需求,也可構建在抽象基類上。你可以輕松地用自己的實現替換關鍵組件。一般來說,ASP.NET Core MVC為每個組件提供了以下3個選項。

          • 使用組件的默認實現(對于大多數應用程序來說應該是足夠的)。
          • 從默認實現派生一個子類來調整其行為。
          • 使用接口或抽象基類的新實現完全替換組件。

          你將從第14章開始,了解各種組件、如何替換以及為什么要調整或替換每個組件。

          3.嚴格控制HTML和HTTP

          ASP.NET Core MVC能夠生成清晰、符合標準的標簽。它的內置標簽幫助器能產生符合標準的輸出,但與ASP.NET Web Forms相比,有更重要的理念上的變化。ASP.NET Core MVC并不會生成一些難以控制的HTML控件,而是鼓勵你創建簡單而優雅的標簽,并使用CSS進行樣式化。

          當然,如果你想要為諸如日期選擇器或級聯菜單之類的復雜UI元素使用一些現成的小部件,那么ASP.NET Core MVC采用的“無特定要求”方法可以很輕松地使用各種最佳組合的客戶端庫,如jQuery、Angular或Bootstrap CSS庫。ASP.NET Core MVC與這些庫相互配合得很好,微軟已包含這些模板以啟動新的開發項目。

          ASP.NET Core MVC與HTTP協調工作。你可以控制在瀏覽器和服務器之間傳遞的請求,因此你可以根據需要調整用戶體驗。使用 Ajax 更加容易,創建 Web 服務來接收瀏覽器 HTTP 請求是一個簡單的過程。

          4.可測試性

          ASP.NET Core MVC架構在使應用程序變得可維護和可測試方面提供了良好的開端,因為你可以將不同的應用程序關注點自然地分離成獨立的部分。此外,ASP.NET Core平臺和ASP.NET Core MVC框架的每個部分都可以為單元測試進行隔離和替換,可以使用任何流行的開源測試框架(如xUnit)。

          在本書中,你將看到如何為ASP.NET MVC控制器編寫整潔、簡單的單元測試示例。為了模擬各種場景,這些示例使用各種測試和模擬策略來支持框架組件的虛構或模擬實現。即使你以前從來沒有寫過單元測試,這也是一個很好的開始。

          可測試性不僅僅是單元測試的問題。ASP.NET Core MVC應用程序也可以與UI自動化測試工具一起使用。你可以編寫模擬用戶交互的測試腳本,而不需要猜測框架將生成哪些HTML元素結構、CSS類或ID,你不必擔心頁面結構發生意外的變化。

          5.強大的路由系統

          統一資源定位器(URL)的風格隨著Web應用技術的發展而發展,比如,以下URL越來越少見。

          /App_v2/User/Page.aspx?action=show%20prop&prop_id=82742

          取而代之的是一種更簡單、更干凈的格式:

          /to-rent/chicago/2303-silver-street

          采用這種URL結構有一些很好的理由。第一,搜索引擎會對URL中找到的關鍵字加權。搜索“rent in Chicago”(芝加哥租房)更有可能找到更簡單的網址。第二,許多網絡用戶現在已經足夠了解URL,并樂于通過在瀏覽器的地址欄中鍵入導航選項。第三,當人們理解URL的結構時,才更有可能鏈接它,與朋友分享,甚至通過手機朗讀。第四,它不會向公共Internet暴露你的應用程序的技術細節、文件夾和文件名結構,因此你可以自由地更改底層的實現,而不會破壞所有的傳入鏈接。

          整潔的URL在早期的框架中很難實現,但ASP.NET Core MVC默認使用稱為URL路由的功能來提供整潔的URL。這樣可以控制你的URL模式及其與應用程序之間的關系,自由地為用戶創建有意義和有用的URL模式,而無須遵守預定義模式。當然,這意味著你可以輕松地定義一種現代REST風格的URL模式。

          6.現代API

          微軟的.NET平臺隨每個主版本的發展而發展,支持甚至定義了現代編程的最新方向。ASP.NET Core MVC是為.NET Core構建的,因此其API可以充分利用C#程序員熟悉的語言和運行時創新,包括await關鍵字、擴展方法、lambda表達式、匿名和動態類型以及語言集成查詢(LINQ)。

          許多ASP.NET Core MVC API方法和編碼模式與早期平臺相比遵循更整潔、更具表現力的方式。不要擔心,如果你尚不了解最新的C#語言特性,第4章會提供MVC開發中最重要的C#特性總結。

          7.跨平臺

          以前的ASP.NET版本特定于Windows系統,需要使用Windows桌面編寫Web應用程序,使用Windows服務器才能部署和運行它們。微軟使ASP.NET Core支持跨平臺,包括開發和部署。ASP.NET Core可用于不同的平臺,包括macOS和一系列流行的Linux發行版??缙脚_支持使得部署ASP.NET Core MVC應用程序變得更加容易,并且可以很好地支持應用程序容器平臺,如Docker等。

          當前大多數ASP.NET Core MVC開發很可能會使用Visual Studio完成,但微軟也創建了一個名為Visual Studio Code的跨平臺開發工具,這意味著ASP.NET Core MVC開發不再局限于Windows平臺。

          8.ASP.NET Core MVC是開源的

          與以前的Microsoft Web開發平臺不同,你可以免費下載ASP.NET Core和ASP.NET Core MVC的源代碼,甚至修改和編譯自己的版本。當你要調試跟蹤進入一個系統組件并希望進入其代碼內部(甚至閱讀原始的程序員注釋)時,這是非常有價值的。如果你正在構建一個高級組件,并希望了解進一步開發的可能性,或想了解內置組件如何進行實際工作,這也是非常有用的。

          精通ASP.NET Core MVC 第7版

          • 暢銷書升級版,新增大量內容,詳細介紹ASP.NETCoreMVC的功能
          • 講述開發可擴展的Web應用程序的工具和技術,助力你ASP.NET從入門到精通。

          本書分為兩部分,每一部分都涵蓋了一系列相關主題。

          本書第一部分將從ASP.NET Core MVC的背景開始,解釋MVC模式的優點和實際影響,介紹ASP.NET Core MVC的功能,并描述每個ASP.NET Core MVC程序員需要學習的工具和C#語言功能。

          在第2章中,你將通過創建一個簡單的Web應用程序,深入了解主要組件、構建塊以及它們如何組合在一起。然而,本書第一部分主要介紹如何開發一個名為SportsStore的項目,通過該項目,展示從開始到部署的實際開發流程,并介紹ASP.NET Core MVC的主要特性。

          本書第二部分將解釋用于構建SportsStore應用程序的ASP.NET Core MVC功能的內部工作原理。該部分將展示每個功能如何工作,解釋它所扮演的角色,并展示可用的配置和自定義選項。本書第一部分介紹廣泛的背景基礎,第二部分則深入討論細節。

          作者簡介

          Adam Freeman是一位經驗豐富的IT專家,曾在一系列公司擔任高級職務,最后的職務是一家全球性銀行的首席技術官(Chief Technology Officer,CTO)和首席運營官(Chief Operating Officer,COO)。退休以后,他喜歡寫作和長跑。

          詳細目錄

          目  錄
          第 一部分 ASP.NET Core MVC

          第 1章 ASP.NET Core MVC背景 2
          1.1 ASP.NET Core MVC的歷史 2
          1.1.1 ASP.NET Web Forms 2
          1.1.2 起初的MVC框架 3
          1.2 ASP.NET Core 3
          1.2.1 ASP.NET Core MVC 2的新特性 4
          1.2.2 ASP.NET Core MVC的主要優點 4
          1.3 預備知識 6
          1.4 本書的結構 6
          1.5 如何獲取本書的示例代碼 6
          1.6 聯系作者 6
          1.7 小結 7
          第 2章 首個MVC應用程序 8
          2.1 安裝Visual Studio 8
          2.2 安裝.NET Core 2.0 SDK 9
          2.3 創建新的ASP.NET Core MVC項目 9
          2.3.1 添加控制器 11
          2.3.2 理解路由 13
          2.4 渲染頁面 14
          2.4.1 創建并渲染視圖 14
          2.4.2 添加動態輸出 16
          2.5 創建一個簡單的數據錄入程序 17
          2.5.1 設置場景 17
          2.5.2 設計數據模型 18
          2.5.3 創建第二個操作和強類型視圖 18
          2.5.4 鏈接操作方法 19
          2.5.5 建立表單 20
          2.5.6 接收表單數據 21
          2.5.7 顯示響應 25
          2.5.8 添加驗證 27
          2.5.9 設置內容樣式 31
          2.6 小結 35
          第3章 MVC模式、項目與約定 36
          3.1 MVC簡史 36
          3.2 MVC模式 36
          3.2.1 模型 36
          3.2.2 控制器 37
          3.2.3 視圖 37
          3.2.4 MVC的ASP.NET實現 37
          3.3 MVC與其他模式的比較 38
          3.3.1 “智能UI”模式 38
          3.3.2 理解模型-視圖架構 39
          3.3.3 經典的3層架構 39
          3.3.4 MVC的多樣性 40
          3.4 ASP.NET Core MVC項目 40
          3.4.1 創建項目 41
          3.4.2 關于MVC的約定 43
          3.5 小結 44
          第4章 C#基本特性 45
          4.1 準備示例項目 45
          4.1.1 啟用ASP.NET Core MVC 46
          4.1.2 創建MVC應用程序組件 47
          4.2 運用null條件運算符 48
          4.2.1 null條件運算符的連接運算 49
          4.2.2 聯合使用null條件運算符和
          null合并運算符 50
          4.3 使用自動實現屬性 51
          4.3.1 初始化自動實現屬性 51
          4.3.2 創建只讀的自動實現屬性 52
          4.4 使用字符串插值 53
          4.5 使用對象和集合初始化器 54
          4.6 模式匹配 56
          4.7 使用擴展方法 58
          4.7.1 將擴展方法應用于接口 59
          4.7.2 創建過濾擴展方法 60
          4.8 使用Lambda表達式 61
          4.8.1 定義函數 63
          4.8.2 使用Lambda表達式實現方法和
          屬性 65
          4.9 使用類型推斷和匿名類型 66
          4.10 使用異步方法 68
          4.10.1 直接使用任務 69
          4.10.2 使用async和await關鍵字 70
          4.11 獲取名稱 71
          4.12 小結 72
          第5章 使用Razor 73
          5.1 準備示例項目 73
          5.1.1 定義模型 74
          5.1.2 創建控制器 74
          5.1.3 創建視圖 75
          5.2 使用模型對象 75
          5.3 使用布局 78
          5.3.1 創建布局 78
          5.3.2 使用布局 80
          5.3.3 應用視圖啟動文件 80
          5.4 使用Razor表達式 81
          5.4.1 插入數據 82
          5.4.2 設置屬性值 83
          5.4.3 使用條件語句 84
          5.4.4 枚舉數組和集合 85
          5.5 小結 86
          第6章 使用Visual Studio 87
          6.1 準備示例項目 87
          6.1.1 創建模型 87
          6.1.2 創建控制器和視圖 88
          6.2 管理軟件包 89
          6.2.1 NuGet 89
          6.2.2 Bower 91
          6.3 迭代開發 93
          6.3.1 修改Razor視圖 93
          6.3.2 對C#類進行更改 94
          6.3.3 使用瀏覽器鏈接 99
          6.4 部署JavaScript和CSS 102
          6.4.1 啟用靜態內容傳遞 102
          6.4.2 為項目添加靜態內容 103
          6.4.3 更新視圖 104
          6.4.4 MVC應用程序中的打包和
          縮小 105
          6.5 小結 108
          第7章 對MVC應用程序進行
          單元測試 109
          7.1 準備示例項目 109
          7.1.1 啟用內置的標簽助手 109
          7.1.2 為控制器添加操作方法 110
          7.1.3 創建數據輸入表單 110
          7.1.4 更新Index視圖 111
          7.2 測試MVC應用程序 112
          7.2.1 創建單元測試項目 112
          7.2.2 創建項目引用 113
          7.2.3 編寫并運行單元測試 115
          7.2.4 隔離組件以進行單元測試 116
          7.3 改進單元測試 123
          7.3.1 參數化單元測試 123
          7.3.2 改進假的實現 126
          7.4 小結 129
          第8章 SportsStore應用程序 130
          8.1 準備開始 130
          8.1.1 創建MVC項目 130
          8.1.2 創建單元測試項目 133
          8.1.3 測試和啟動應用程序 134
          8.2 開始領域模型開發 134
          8.2.1 創建存儲庫 135
          8.2.2 創建虛擬存儲庫 135
          8.2.3 注冊存儲庫服務 136
          8.3 顯示產品清單 137
          8.3.1 添加一個控制器 137
          8.3.2 添加并配置視圖 138
          8.3.3 設置默認路由 139
          8.3.4 運行應用程序 140
          8.4 準備數據庫 140
          8.4.1 安裝Entity Framework Core
          工具包 141
          8.4.2 創建數據庫類 141
          8.4.3 創建存儲庫類 142
          8.4.4 定義連接字符串 142
          8.4.5 配置應用程序 143
          8.4.6 創建數據庫遷移 145
          8.4.7 創建種子數據 145
          8.5 添加分頁 148
          8.5.1 顯示頁面鏈接 149
          8.5.2 改進URL 155
          8.6 更改內容樣式 157
          8.6.1 安裝Bootstrap包 157
          8.6.2 將Bootstrap樣式應用于布局 157
          8.6.3 創建分部視圖 159
          8.7 小結 160
          第9章 SportsStore的導航 161
          9.1 添加導航控件 161
          9.1.1 過濾產品列表 161
          9.1.2 優化URL結構 164
          9.1.3 構建類別導航菜單 167
          9.1.4 更正頁數 172
          9.2 構建購物車 174
          9.2.1 定義購物車模型 174
          9.2.2 添加Add To Cart按鈕 177
          9.2.3 啟用會話 179
          9.2.4 實現Cart控制器 180
          9.2.5 顯示購物車的內容 181
          9.3 小結 183
          第 10章 完成購物車 184
          10.1 使用服務優化購物車模型 184
          10.1.1 創建支持存儲感知的Cart類 184
          10.1.2 注冊服務 185
          10.1.3 簡化Cart控制器 185
          10.2 完成購物車功能 186
          10.2.1 從購物車中刪除商品 186
          10.2.2 添加購物車摘要小部件 188
          10.3 提交訂單 190
          10.3.1 創建模型類 190
          10.3.2 添加結賬流程 191
          10.3.3 實現訂單處理 193
          10.3.4 完成Order控制器 195
          10.3.5 顯示驗證錯誤 198
          10.3.6 顯示摘要頁面 199
          10.4 小結 199
          第 11章 SportsStore的管理 200
          11.1 管理訂單 200
          11.1.1 增強模型 200
          11.1.2 添加操作方法和視圖 201
          11.2 添加目錄管理 203
          11.2.1 創建CRUD控制器 203
          11.2.2 實現列表視圖 205
          11.2.3 編輯商品 206
          11.2.4 創建新的商品 216
          11.2.5 刪除商品 217
          11.3 小結 220
          第 12章 SportsStore的安全和部署 221
          12.1 保護管理功能 221
          12.1.1 創建身份標識數據庫 221
          12.1.2 應用基本授權策略 224
          12.1.3 創建賬戶控制器和視圖 226
          12.1.4 測試安全策略 229
          12.2 部署應用程序 229
          12.2.1 創建數據庫 230
          12.2.2 準備應用程序 231
          12.2.3 應用數據庫遷移 234
          12.2.4 管理數據庫填充 234
          12.2.5 部署應用程序 237
          12.3 小結 239
          第 13章 使用Visual Studio Code 240
          13.1 設置開發環境 240
          13.1.1 安裝Node.js 240
          13.1.2 檢查Node.js安裝狀態 241
          13.1.3 安裝Git 241
          13.1.4 檢查Git安裝狀態 241
          13.1.5 安裝Bower 241
          13.1.6 安裝.NET Core 242
          13.1.7 檢查.NET Core安裝狀態 242
          13.1.8 安裝Visual Studio Code 242
          13.1.9 檢查Visual Studio Code安裝
          狀態 243
          13.1.10 安裝Visual Studio Code的
          C#擴展 243
          13.2 創建ASP.NET Code項目 244
          13.3 使用Visual Studio Code準備項目 244
          13.3.1 管理客戶端軟件包 245
          13.3.2 配置應用程序 246
          13.3.3 構建和運行項目 246
          13.4 重新創建PartyInvites應用程序 246
          13.4.1 創建模型和存儲庫 247
          13.4.2 創建數據庫 249
          13.4.3 創建控制器和視圖 250
          13.5 Visual Studio Code中的單元測試 254
          13.5.1 創建單元測試 254
          13.5.2 運行測試 255
          13.6 小結 255

          第二部分 ASP.NET Core MVC詳解

          第 14章 配置應用程序 257
          14.1 準備示例項目 257
          14.2 配置項目 259
          14.2.1 將包添加到項目中 259
          14.2.2 將工具包添加到項目中 261
          14.3 理解Program類 261
          14.4 了解Startup類 264
          14.4.1 了解ASP.NET服務 266
          14.4.2 了解ASP.NET中間件 268
          14.4.3 了解如何調用Configure方法 275
          14.4.4 添加其他中間件 278
          14.5 配置應用程序 281
          14.5.1 創建JSON配置文件 283
          14.5.2 使用配置數據 284
          14.5.3 配置日志記錄 285
          14.5.4 配置依賴注入 288
          14.6 配置MVC服務 289
          14.7 處理復雜配置 290
          14.7.1 創建不同的外部配置文件 290
          14.7.2 創建不同的配置方法 292
          14.7.3 創建不同的配置類 293
          14.8 小結 294
          第 15章 URL路由 295
          15.1 準備示例項目 295
          15.1.1 創建模型類 296
          15.1.2 創建Example控制器 296
          15.1.3 創建視圖 298
          15.2 介紹URL模式 299
          15.3 創建和注冊簡單路由 299
          15.4 定義默認值 300
          15.5 使用靜態URL片段 303
          15.6 定義自定義片段變量 306
          15.6.1 使用自定義片段變量作為
          操作方法的參數 308
          15.6.2 定義可選的URL片段 309
          15.6.3 定義可變長度路由 311
          15.7 約束路由 312
          15.7.1 使用正則表達式約束路由 314
          15.7.2 使用類型和值約束 316
          15.7.3 組合約束 316
          15.7.4 定義自定義約束 318
          15.8 使用特性路由 320
          15.8.1 準備特性路由 320
          15.8.2 應用特性路由 321
          15.8.3 應用路由約束 323
          15.9 小結 323
          第 16章 高級路由特性 324
          16.1 準備示例項目 324
          16.2 在視圖中生成傳出的URL 325
          16.2.1 創建傳出的鏈接 326
          16.2.2 創建非鏈接的URL 333
          16.3 自定義路由系統 334
          16.3.1 更改路由系統配置 335
          16.3.2 創建自定義路由類 336
          16.4 使用區域 344
          16.4.1 創建區域 344
          16.4.2 創建區域路由 345
          16.4.3 填充區域 346
          16.4.4 生成區域中指向操作的鏈接 347
          16.5 URL模式最佳實踐 348
          16.5.1 保持URL的整潔性 348
          16.5.2 GET方法和POST方法:
          選擇最合適的方法 349
          16.6 小結 349
          第 17章 控制器和操作 350
          17.1 準備示例項目 350
          17.2 理解控制器 353
          17.3 創建控制器 353
          17.3.1 創建POCO控制器 353
          17.3.2 使用控制器基類 355
          17.4 接收上下文數據 355
          17.4.1 從Context對象中接收數據 356
          17.4.2 使用操作方法參數 359
          17.5 生成響應 360
          17.5.1 使用Context對象生成響應 360
          17.5.2 理解操作結果 361
          17.5.3 生成HTML響應 362
          17.5.4 執行重定向 369
          17.5.5 返回不同類型的內容 374
          17.5.6 響應文件的內容 376
          17.5.7 返回錯誤和HTTP狀態碼 377
          17.5.8 理解其他操作結果類 378
          17.6 小結 378
          第 18章 依賴注入 379
          18.1 準備示例項目 379
          18.1.1 創建模型和存儲庫 380
          18.1.2 創建控制器和視圖 381
          18.1.3 創建單元測試項目 383
          18.2 創建松散耦合的組件 383
          18.3 ASP.NET的依賴注入 387
          18.3.1 準備依賴注入 388
          18.3.2 配置服務提供者 389
          18.3.3 對具有依賴項的控制器進行
          單元測試 390
          18.3.4 使用依賴關系鏈 390
          18.3.5 對具體類型使用依賴注入 393
          18.4 服務的生命周期 394
          18.4.1 使用瞬態生命周期 395
          18.4.2 使用作用域的生命周期 398
          18.4.3 使用單例生命周期 399
          18.5 使用操作注入 400
          18.6 使用屬性注入特性 401
          18.7 手動請求實現對象 401
          18.8 小結 402
          第 19章 過濾器 403
          19.1 準備示例項目 403
          19.1.1 啟用SSL 404
          19.1.2 創建控制器和視圖 404
          19.2 使用過濾器 405
          19.3 實現過濾器 408
          19.4 使用授權過濾器 409
          19.5 使用操作過濾器 412
          19.5.1 創建操作過濾器 412
          19.5.2 創建異步操作過濾器 414
          19.6 使用結果過濾器 414
          19.6.1 創建結果過濾器 415
          19.6.2 創建異步結果過濾器 416
          19.6.3 創建混合操作/結果過濾器 417
          19.7 使用異常過濾器 419
          19.8 為過濾器使用依賴注入 421
          19.8.1 解決過濾器依賴項 421
          19.8.2 管理過濾器的生命周期 424
          19.9 創建全局過濾器 426
          19.10 理解和更改過濾器的執行順序 428
          19.11 小結 430
          第 20章 API控制器 431
          20.1 準備示例項目 431
          20.1.1 創建模型和存儲庫 431
          20.1.2 創建控制器和視圖 433
          20.2 REST控制器的作用 435
          20.2.1 速度問題 435
          20.2.2 效率問題 436
          20.2.3 開放性問題 436
          20.3 REST和API控制器 436
          20.3.1 創建API控制器 437
          20.3.2 測試API控制器 440
          20.3.3 在瀏覽器中使用API控制器 443
          20.4 內容格式 445
          20.4.1 默認內容策略 445
          20.4.2 內容協商 446
          20.4.3 指定action數據格式 448
          20.4.4 從路由或查詢字符串獲取
          數據格式 449
          20.4.5 啟用完成內容協商 450
          20.4.6 接收不同的數據格式 451
          20.5 小結 452
          第 21章 視圖 453
          21.1 準備示例項目 453
          21.2 創建自定義視圖引擎 454
          21.2.1 創建自定義IView 456
          21.2.2 創建IViewEngine實現 456
          21.2.3 注冊自定義視圖引擎 457
          21.2.4 測試視圖引擎 458
          21.3 使用Razor引擎 459
          21.3.1 準備示例項目 459
          21.3.2 Razor視圖 461
          21.4 將動態內容添加到Razor視圖中 463
          21.4.1 使用布局部分 464
          21.4.2 使用分部視圖 468
          21.4.3 將JSON內容添加到視圖中 469
          21.5 配置Razor 471
          21.6 小結 475
          第 22章 視圖組件 476
          22.1 準備示例項目 476
          22.1.1 創建模型和存儲庫 476
          22.1.2 創建控制器和視圖 478
          22.1.3 配置應用程序 480
          22.2 視圖組件 481
          22.3 創建視圖組件 481
          22.3.1 創建POCO視圖組件 482
          22.3.2 從ViewComponent基類派生 483
          22.3.3 視圖組件結果 484
          22.3.4 獲取上下文數據 487
          22.3.5 創建異步視圖組件 491
          22.4 創建混合的控制器/視圖組件類 493
          22.4.1 創建混合視圖 493
          22.4.2 應用混合類 495
          22.5 小結 495
          第 23章 標簽助手 496
          23.1 準備示例項目 496
          23.1.1 創建模型和存儲庫 496
          23.1.2 創建控制器、布局與視圖 497
          23.1.3 配置應用程序 499
          23.2 創建標簽助手 500
          23.2.1 定義標簽助手類 501
          23.2.2 注冊標簽助手 503
          23.2.3 使用標簽助手 503
          23.2.4 管理標簽助手的作用域 505
          23.3 高級標簽助手特性 508
          23.3.1 創建縮寫元素 508
          23.3.2 前置和追加內容與元素 510
          23.3.3 使用依賴注入獲取視圖
          上下文數據 512
          23.3.4 使用視圖模型 514
          23.3.5 協調標簽助手 516
          23.3.6 抑制輸出元素 517
          23.4 小結 518
          第 24章 使用表單標簽助手 519
          24.1 準備示例項目 519
          24.2 使用form元素 521
          24.2.1 設置form目標 521
          24.2.2 使用防偽特性 522
          24.3 使用input元素 524
          24.3.1 配置input元素 524
          24.3.2 格式化數據 526
          24.4 使用label元素 528
          24.5 使用select和option元素 529
          24.5.1 使用數據源填充select元素 530
          24.5.2 從枚舉中生成option元素 531
          24.6 使用textarea元素 535
          24.7 驗證表單標簽助手 536
          24.8 小結 536
          第 25章 使用其他內置標簽助手 537
          25.1 準備示例項目 537
          25.2 使用宿主環境標簽助手 538
          25.3 使用JavaScript和CSS標簽助手 539
          25.3.1 管理JavaScript文件 539
          25.3.2 管理CSS樣式表 545
          25.4 使用超鏈接元素 547
          25.5 使用圖像元素 548
          25.6 使用數據緩存 549
          25.6.1 設置緩存過期時間 551
          25.6.2 使用緩存變體 552
          25.7 小結 555
          第 26章 模型綁定 556
          26.1 準備示例項目 556
          26.1.1 創建模型和存儲庫 556
          26.1.2 創建控制器和視圖 558
          26.1.3 配置應用 559
          26.2 理解模型綁定 560
          26.2.1 默認綁定值 561
          26.2.2 綁定簡單值 562
          26.2.3 綁定復雜類型 562
          26.2.4 綁定數組和集合 570
          26.3 指定模型綁定源 575
          26.3.1 選擇標準綁定源 576
          26.3.2 使用請求頭作為綁定源 577
          26.3.3 使用請求體作為綁定源 579
          26.4 小結 581
          第 27章 模型驗證 582
          27.1 準備示例項目 582
          27.1.1 創建模型 583
          27.1.2 創建控制器 583
          27.1.3 創建布局和視圖 584
          27.2 理解模型驗證的需求 586
          27.3 顯式地驗證模型 586
          27.3.1 為用戶顯示驗證錯誤消息 588
          27.3.2 顯示驗證消息 589
          27.3.3 顯示屬性級驗證消息 592
          27.3.4 顯示模型級驗證消息 593
          27.4 使用元數據指定驗證規則 595
          27.5 執行客戶端驗證 599
          27.6 執行遠程驗證 601
          27.7 小結 603
          第 28章 ASP.NET Core Identity
          入門 604
          28.1 準備示例項目 604
          28.2 設置ASP.NET Core Identity 607
          28.2.1 創建用戶類 607
          28.2.2 創建數據庫上下文類 608
          28.2.3 配置數據庫連接串 608
          28.2.4 創建ASP.NET Core Identity
          數據庫 610
          28.3 使用ASP.NET Core Identity 610
          28.3.1 列舉用戶賬戶 610
          28.3.2 創建用戶 612
          28.3.3 驗證密碼 615
          28.3.4 驗證用戶詳情 620
          28.4 完成管理功能 624
          28.4.1 實現刪除功能 625
          28.4.2 實現編輯功能 626
          28.5 小結 629
          第 29章 應用ASP.NET Core
          Identity 630
          29.1 準備示例項目 630
          29.2 驗證用戶 630
          29.2.1 準備實現驗證 632
          29.2.2 添加用戶驗證 634
          29.2.3 測試驗證 636
          29.3 使用角色授權用戶 636
          29.3.1 創建與刪除角色 637
          29.3.2 管理角色成員 641
          29.3.3 使用角色進行授權 644
          29.4 播種數據庫 647
          29.5 小結 650
          第30章 ASP.NET Core Identity
          進階 651
          30.1 準備示例項目 651
          30.2 添加自定義用戶屬性 652
          30.2.1 準備數據庫遷移 654
          30.2.2 測試自定義屬性 655
          30.3 使用聲明和策略 655
          30.3.1 聲明 656
          30.3.2 創建聲明 659
          30.3.3 使用策略 661
          30.3.4 使用策略對資源授權訪問 666
          30.4 使用第三方驗證 670
          30.4.1 注冊Google應用 670
          30.4.2 啟用Google驗證 671
          30.5 小結 674
          第31章 模型約定與操作約束 675
          31.1 準備示例項目 675
          31.2 使用應用程序模型和模型約定 677
          31.2.1 理解應用程序模型 678
          31.2.2 理解模型約定角色 680
          31.2.3 創建模型約定 680
          31.2.4 理解模型約定的執行順序 684
          31.2.5 創建全局模型約定 685
          31.3 使用操作約束 686
          31.3.1 準備示例項目 687
          31.3.2 操作約束的作用 688
          31.3.3 創建操作約束 689
          31.3.4 在操作約束中處理依賴 692
          31.4 小結 694

          VC(Model-View-Controller)是一種軟件設計模式,特別適用于Web應用程序開發。

          它通過將應用程序的邏輯劃分為三個核心組件來簡化應用程序的設計和維護:

          模型(Model)、視圖(View)和控制器(Controller)。

          1. 模型(Model):負責處理應用程序的數據和業務邏輯。包含數據的存儲、檢索和驗證規則。通常與數據庫交互,以存取和更新數據。與視圖和控制器保持分離,確保數據的獨立性和可重用性。
          2. 視圖(View):負責顯示用戶界面??梢允荋TML頁面、圖形用戶界面(GUI)或其他類型的展示層。不包含任何業務邏輯或數據處理代碼。依賴于模型來獲取數據,并顯示給用戶。
          3. 控制器(Controller):負責處理用戶的輸入,如點擊按鈕、提交表單等。接收用戶的請求,并決定使用哪個模型來處理這些請求。更新模型的狀態,并指示視圖重新渲染,以反映模型的新狀態。充當模型和視圖之間的協調者。

          MVC模式的優點:

          • 分離關注點:它將應用程序的不同方面(數據、界面和用戶交互)分離到不同的組件中,使得每個組件都更易于理解和維護。
          • 可重用性:由于模型和視圖是分離的,因此可以在不同的視圖之間共享相同的模型,反之亦然。
          • 靈活性:由于MVC的模塊化設計,可以獨立地修改、擴展或替換模型、視圖或控制器,而不會影響其他組件。
          • 易于測試:由于組件之間的低耦合,可以更容易地編寫單元測試和系統測試。

          在C#中,ASP.NET MVC框架就是一個實現MVC設計模式的例子。它提供了一個清晰的結構來構建Web應用程序,使得開發人員能夠專注于各自的職責,提高代碼的可讀性和可維護性。


          主站蜘蛛池模板: 无码精品尤物一区二区三区| 麻豆视频一区二区三区| 久久精品中文字幕一区| 久久久精品人妻一区二区三区蜜桃| 91大神在线精品视频一区| 国产一区美女视频| 国产乱人伦精品一区二区在线观看| 国产精品熟女视频一区二区| 精品视频一区二区三区免费| 丰满岳妇乱一区二区三区| 国产经典一区二区三区蜜芽 | 日本精品3d动漫一区二区| 亚洲av乱码中文一区二区三区| 精品一区二区三区波多野结衣| 国模无码一区二区三区不卡| 一区二区三区www| 相泽亚洲一区中文字幕| 中文无码精品一区二区三区| 99精品久久精品一区二区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 精品国产鲁一鲁一区二区| 亚洲一区二区三区高清| 伊人色综合一区二区三区影院视频| 亚洲一区动漫卡通在线播放| 蜜芽亚洲av无码一区二区三区| 国产丝袜一区二区三区在线观看 | 中文字幕在线一区二区三区| 清纯唯美经典一区二区| 日韩人妻一区二区三区免费| 精品国产鲁一鲁一区二区| 国产精品538一区二区在线| 精品国产一区二区三区在线观看| 国产亚洲福利精品一区| 国产欧美一区二区精品仙草咪| 国产激情一区二区三区在线观看| 久久久不卡国产精品一区二区| 久久精品一区二区三区日韩| 精品国产一区二区三区香蕉事 | 国产精品揄拍一区二区久久| 精品国产一区在线观看| 免费萌白酱国产一区二区三区|