《ASP.NET MVC 4 實戰》 - 學習筆記

来源:https://www.cnblogs.com/GATTACA2011/archive/2020/05/12/12874834.html
-Advertisement-
Play Games

《ASP.NET MVC 4 實戰》 [作者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner[譯者] (中) 徐燕萍 李萍 林逸[出版] 人民郵電出版社[版次] 20 ...


《ASP.NET MVC 4 實戰》

========== ========== ==========
[作者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner
[譯者] (中) 徐燕萍 李萍 林逸
[出版] 人民郵電出版社
[版次] 2014年05月 第1版
[印次] 2014年05月 第1次 印刷
[定價] 69.00元
========== ========== ==========

【第01章】

(P003)

Web 本質上是無狀態的。

【第02章】

(P015)

框架是如何知道將 URL 映射到一個特定的控制器動作的?答案就在 Global.asax 文件的 RegisterRoutes 方法中。

Web API 是微軟隨 ASP.NET MVC 4 一起發佈的一個 Web 服務框架。

(P016)

ViewBag 本質上是一個字典 —— 它提供了一種存儲數據的方式,這些數據隨後能夠在視圖中進行訪問。

(P017)

@ 首碼表示 HTML 與代碼之間的轉換。

【第03章】

(P032)

視圖的職責看似很簡單。它的生存目標是取得一個送給它的模型,並用這個模型來渲染內容。由於控制器及相關服務已經執行了所有業務邏輯,並將結果包裝成一個模型對象,故視圖只需要知道如何取得這一模型,並把它轉換成 HTML 。

(P033)

可以調用 View 方法的第二個重載版本來接受一個明確的視圖名。

(P034)

能夠將數據傳遞給視圖的三種不同方式,即使用 ViewDataDictionary (視圖數據字典) 、 ViewBag (視圖包) ,以及強類型視圖。

(P035)

只要從字典接受數據,就必須執行類型轉換。

(P036)

為了使用強類型視圖,首先必須確保控制器動作適當地設置了 ViewData.Model 。

(P037)

Razor 的多行代碼語句是以 @ 後跟開花括弧字元開始的 : @{ 。

(P038)

數據在渲染到屏幕之前是預設自動編碼的。若要顯示未編碼信息,可以使用 Html.Raw 方法來強迫渲染原始文本。

(P043)

對於簡單的顯示模型和編譯器模型, EditorForModel 和 DisplayForModel 方法可能就夠了。

【第04章】

(P051)

IController 介面定義了控制器最基本的元素 —— 一個單一的 Execute 方法,它接收一個 RequestContext 對象。

ControllerBase 類直接實現 IController ,但只包含了我們曾考察的幾個特性所必需的基礎架構。

(P052)

Controller 類繼承於 ControllerBase ,因此它包含了 ControllerBase 所定義的屬性 (如 ViewData) ,但它還增加了大量的附加功能。

(P053)

更好的做法是依靠視圖,以使表現邏輯與控制器分離開來。這更易於修改應用程式的用戶界面,而無需改變控制器代碼。

動作方法選擇器是一種註解屬性,它可以用來對動作方法進行修飾或標註。

選擇器的名稱總是 XXXAttribute 形式的,但在使用時,需要將 Attribute 部分去掉。

(P057)

請記住,調用 ModelState.IsValid 並未真正執行驗證,它只是檢查驗證是否已經成功或失敗,驗證本身是在調用控制器動作之前發生的。

(P060)

每個測試都有三個階段 —— Arrange (準備) 、 Act (動作) 、 Assert (斷言) 。

【第05章】

(P067)

視圖模型的目的十分簡單 —— 它是一個專門為用於視圖而設計的模型。它提供了一個建立在域模型之上的簡化介面,以保持視圖決策最小化。

(P068)

為了使視圖儘可能是可維護的,它應該儘可能簡化 —— 複雜的迴圈和計算邏輯應該在更高層執行,視圖唯一應該做的只是顯示這種計算的結果。

(P070)

控制器與視圖共用了一個 ViewDataDictionary 類型的對象,其名稱為 ViewData 。

【第06章】

(P076)

伺服器是保護數據、防止劣質輸入的最後一道防線。

【第07章】

(P088)

現在有許多流行的 JavaScript 庫 (包括 jQuery 、 Prototype 、 MooTools 和 Dojo 等) ,所有這些都是為了讓 JavaScript 更易於使用,並輔助跨瀏覽器的 JavaScript 功能標準化。

在使用 jQuery 時,主要是使用 jQuery 函數 (基本上是使用別名符號 “$”) ,它能夠根據其上下文執行各種不同的操作。

當把一個字元串傳遞給 “$” 函數時, jQuery 會將其視為 CSS 的選擇器,並嘗試在頁面中找出與該選擇器匹配的任何元素。

“#” 表示元素的 id 標簽屬性。

“.” 表示元素的 class 標簽屬性。

空格表示子元素。

(P089)

最好將所有事件綁定和 jQuery 代碼都包含到 ready 處理程式之中。

(P092)

只有啟用了 JavaScript 的瀏覽器才能向伺服器發送 Ajax 請求,否則只能發送常規的 HTTP 請求。

(P095)

由於 JavaScript 是將函數作為對象來使用的,所以 this 關鍵字的含義並不總是顯而易見的,因為它是上下文敏感的。

(P098)

對 BeginForm 的調用會渲染表單的開標簽,而 using 語句的閉括弧會渲染 <form /> 的閉標簽。

【第08章】

(P113)

認證確保用戶已提供了適當的訪問系統所需的憑據。一旦用戶登錄,那麼他們便是已認證的了。

授權發生在認證之後,且包括對給定用戶是否有權對系統做某事的決策。當用戶訪問一個其他人不可用的資源時,必須得到明確的授權。

(P118)

決不相信輸入。決不、永遠、永遠也別期望輸入是安全的。無論是人類用戶或是機器,危險的輸入都是陷入 XSS 攻擊的根源。

HTML 編碼是將 HTML 轉換成文本,這種 HTML 會被瀏覽器解釋成渲染時不再解釋的符號。

【第09章】

(P129)

通過使用路由, URL 完全能夠與底層實現解耦。

(P131)

對於 URL ,大小是有關係的,而且是越小越好。

(P136)

路由處理程式是實現 IRouteHandler 介面的類,並負責構造適當的 HTTP 處理程式,以便為所選路由處理請求。

【第10章】

(P157)

為了創建一個類型的實例,你必須通過開泛型類型創建一個閉泛型類型。

【第11章】

(P173)

利用 AutoMapper 讓開發人員能夠只寫一次代碼,然後只要用一個聲明,就可以在很多地方運用它。

【第12章】

(P174)

註重保持控制器輕量級是重要的。

(P175)

減輕控制器負擔的快速方式是去除其責任。

(P177)

重構不會讓事情簡單很多,但一個簡單的更改可能會明顯降低圈複雜度,並且能夠減輕與複雜控制器關聯在一起的測試努力和維護負擔。

【第13章】

(P193)

T4MVC 是一個強大的工具,它能夠消除 ASP.NET MVC 應用程式中的許多魔術字元串激增問題。

【第14章】

(P194)

Nuget 是隨 MVC 一起安裝的,並使得 MVC 開發更容易。

【第15章】

(P208)

NHibernate 要求至少有一個映射。

(P209)

Log4Net.config 文件含有 log4net 的配置信息,該信息廣泛適用於任何類型的應用程式。

【第16章】

(P222)

框架包含一個 ControllerBase 類,它為管理 ViewData 和 TempData 提供了最基本的屬性。

(P223)

動作是控制各個伺服器請求主邏輯的方法,但並不是一個控制器類的所有方法都有資格作為一個動作。

(P230)

動作有助於你輕鬆地講單個控制器分解成一些基本功能,而動作過濾器則為在動作執行之前或之後插入一些代碼提供了掛接手段。動作選擇器為動作調用器提供了應選擇哪一個動作執行的線索,而動作結果有助於封裝重覆的渲染邏輯。

【第17章】

(P233)

佈局也可以相互嵌套,因此,可以為整個網站的通用模板定義一個泛型網站級佈局。更具體的佈局然後可以定義更具體的模板和新的內容塊。

當多個視圖共用公用內容時,運用佈局是最好的方式。然後可以把 (視圖) 內容推送給佈局,每個視圖只需要提供自己的內容片斷。

(P234)

渲染分部的機制很簡單,可以在一個父視圖中使用 RenderPartial 方法或 Partial 方法。

即使不與其他視圖進行內容共用,分部也可以用來簡化和減少視圖中的標記量。

(P235)

Html.RenderPartial() 是一個無返回方法,它立即將分部渲染到響應流。而 Html.Partial() 返回一個字元串被立即渲染到視圖。

在 Razor 中, Html.RenderPartial 必須放在一個代碼塊中。

(P237)

常規控制器動作與子動作之間的唯一區別就是這個 ChildActionOnly 註解屬性。

【第18章】

(P247)

作為開發者,經常容易受到技術細節、設計模式,以及建立優雅的可維護體繫結構等方面的困擾,而忽略關註事情的真正本質 —— 解決用戶的問題。如果應用程式不能實際工作,即使有最可維護的代碼,對用戶也是毫無幫助的。

(P248)

知道何時或何處才適合使用一種技術或工具,與知道如何使用這一技術是同等重要的。

(P251)

DI 容器本質上是一個智能工廠。像其他工廠類一樣,其職責是創建對象的實例,但它也知道如何實例化對象的依賴性。

(P253)

任何對基礎結構的某種外部依賴性都可以用一種很好的候選辦法來實現,這種辦法就是將這種依賴性提取出來,形成一個由控制器使用的介面。

【第19章】

(P261)

Nuget 包是一個簡單的 zip 文件,它含有一個清單和需要安裝到 Visual Studio 項目中的文件。它還包含了三個 PowerShell 腳本,用於在安裝、卸載和項目啟動期間實現自動化。Nuget 包是通過其 ID 進行標識的,這是一個用以唯一標識包及其版本號的字元串。清單文件含有以下方面的信息 : 安裝期間需要添加到項目的文件、依賴包列表,以及包括作者、項目網站 URL 和許可 URL 等信息的附加元數據。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.Xpath Helper Xpath Helper 是一個面向 Xpath 初學者的 Google Chrome 插件。相對於人工找 Xpath 語法,Xpath Helper 可以實現自動分析。只要你打開一個網頁,然後點擊任何一個網路元素,Xpath Helper 就能自動幫你找出相應的 Xp ...
  • 工作的時候,尤其是自媒體,我們必備水印添加工具以保護我們的知識產權,網上有許多的線上 / 下載的水印添加工具,但他們或多或少都存在以下問題: 線上工具需要上傳到對方伺服器,信息不安全。 很多工具不具備批量處理功能。 很多工具自定義的功能太少,如水印透明度,字體等。 操作繁瑣。這裡還要註意:光理論是不 ...
  • Attribute(特性)的概念不在此贅述了,相信有點.NET基礎的開發人員都明白,用過Attribute的人也不在少數,畢竟很多框架都提供自定義的屬性,類似於Newtonsoft.JSON中JsonProperty、JsonIgnore等 自定義特性 .NET 框架允許創建自定義特性,用於存儲聲明 ...
  • 隨著 .NET 5 發佈日期的日益臨近,其對應的 C# 新版本已確定為 C# 9.0,其中新增加的特性(或語法糖)也已基本鎖定,本系列文章將向大家展示它們。 ...
  • 基於 .NET 的一個全新的、好用的 PHP SDK + Runtime: PeachPie 來啦! ...
  • 一、數據準備 在SQL Server中創建記錄日誌的數據表LogDetail: CREATE TABLE [dbo].[LogDetail]( [LogID] [INT] IDENTITY(1,1) NOT NULL, --自增ID [LogDate] [DATETIME] NULL, --日誌時間 ...
  • ASP.NET Core 入門 本教程介紹如何使用 .NET Core CLI 創建並運行 ASP.NET Core Web 應用。 你將瞭解如何: 創建 Web 應用項目。 信任開發證書。 運行應用。 編輯 Razor 頁面。 最後,在本地電腦上運行工作 Web 應用。 先決條件 .NET Co ...
  • 大家習慣將服務註冊寫進Startup中的Configure管道配置,用來在服務啟動時進行Consul服務註冊,如圖: 然後由於某些原因,我更適合將服務部署在IIS,部署好之後,點擊啟動網站,卻發現服務並沒有註冊進Consul,然後我就查其原因: 使用 IIS 在 Windows 上托管 ASP.NE ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...