《ASP.NET 框架應用程式實戰》 [作者] (中) 李發陵 冷亞洪[出版] 清華大學出版社[版次] 2017年01月 第1版[印次] 2017年01月 第1次 印刷[定價] 47.00元 【第02章】 (P023) 目前, ASP.NET MVC 4 已內置於 Visual Studio 201 ...
《ASP.NET 框架應用程式實戰》
========== ========== ==========
[作者] (中) 李發陵 冷亞洪
[出版] 清華大學出版社
[版次] 2017年01月 第1版
[印次] 2017年01月 第1次 印刷
[定價] 47.00元
========== ========== ==========
【第02章】
(P023)
目前, ASP.NET MVC 4 已內置於 Visual Studio 2012 中; ASP.NET MVC 5 已內置於 Visual Studio 2013 中。
ASP.NET MVC 框架為創建基於 MVC 設計模式的 Web 應用程式提供了設計框架和技術基礎。它是輕量級的、高度可測試的演示框架,並且它結合了現有的 ASp.NET 特性。 MVC 框架被定義在 System.Web.Mvc 命名空間中,並且是被 System.Web 命名空間所支持的。
(P024)
ASP.NET MVC 框架是基於標準組件的,開發人員可以根據需要分解和替換每個組件。
(P028)
學習一個軟體開發框架最有效的方式就是瞭解並使用它。
(P031)
MVC 5 項目預設使用 Razor 視圖引擎來開發項目。
(P034)
在 “@{ /* 代碼體 */ }” 中的代碼的每一行都必須以 “;” 結束。
(P035)
輸出變數值 (格式 : @變數) 則不需要以 “;” 作為結束符。
如果在 “@” 的前一個字元若是非空白字元,則 MVC 引擎不會對其進行處理。
只有一行語句的表達式,以 “@” 開頭,不需要 { } 。
Razor 不支持訪問修飾符 (如 public 、 private 等) ,可以在單行代碼中定義局部變數。
(P036)
在 “@ {...}” 內部可以輸出文本,利用 “@:” 進行單行輸出。
(P037)
在 “@ {...}” 內部可以利用 <text/> 進行多行輸出。
在 Razor 中使用迴圈需要加關鍵字元 “@” ,共有兩種方式可以實現迴圈的效果。
(P039)
視圖文件預設的目錄為 : Views\[ControllerName]\[ActionName].cshtml
(P040)
一個 Web 應用程式通過 RouteTable 類型的靜態只讀屬性 Routes 維護一個全局的路由表,該屬性返回一個 RouteCollection 對象,我們將這個對象稱為路由表。
(P050)
多數情況下,會通過一個 Model 對象來處理複雜的參數,如參數為一個對象,這時 DefaultModelBinder 會遍歷 Model 對象的屬性來綁定參數。
(P052)
如果在 Action 的參數中沒有顯示指定接收的模型參數,則可以使用顯示模型綁定方法獲取視圖中提取的數據。
UpdateModel 與 TryUpdateModel 都用於顯示模型綁定。
(P059)
佈局視圖為公共視圖,文件名通常以下劃線開頭。
佈局視圖中可以選擇性地使用 @RenderBody() 或 @RenderSection() 方法作為佈局占位符,但一個佈局視圖只能有一個 @RenderBody() ,可以有多個 @RenderSection() 。
由於佈局視圖的特殊性,決定了佈局視圖不能直接被控制器的方法調用,需要被其他視圖頁引用後才能使用。
(P060)
如果視圖頁中沒有顯示指定的佈局視圖,則系統會自動調用 “~/Views/_ViewStart.cshtml” 視圖文件中設定的視圖頁作為佈局視圖。
分部視圖的作用在於一個分部視圖的創建可以被多個佈局視圖和普通視圖多次調用。
(P063)
在 ASP.NET MVC 5 中可以使用 BundleTable 打包多個 CSS 文件和 JavaScript 文件,以提高網路載入速度和頁面解析速度。
(P065)
在視圖文件的相應位置調用 ScriptRender 類和 StyleRender 類的 Render() 方法可以輸出打包的資源。
(P081)
HTML 幫助器的常用方法 :
1. @Html.Action() —— 載入指定的分部視圖;
2. @Html.Partial() @Html.RenderPartial() —— 以 HTML 編碼字元串的形式呈現指定的分部視圖;
(P094)
Partial 方法的返回值為 MvcHtmlString ,而 RenderPartial 方法的返回值為 void 。
(P095)
UrlHelper 類的常用方法 :
1. @Url.Action() —— 使用指定的操作名稱生成操作方法的完全限定 URL ;
2. @Url.Content() —— 將虛擬 (相對) 路徑轉換為應用程式的絕對路徑;
3. @Url.Encode() —— 將 URL 字元串中的特殊字元編碼為字元實體等效項;
【第03章】
(P106)
對於獲取的元素集合,獲取其中的某一項 (通過索引指定) 可以使用 eq 、 get(n) 方法或索引號獲取。要註意, eq 返回的是 jQuery 對象,而 get(n) 和索引返回的是 DOM 元素對象。對於 jQuery 對象只能使用 jQuery 的方法,而 DOM 對象只能使用 DOM 的方法。
jQuery 用同一函數實現 set 和 get 方法。
(P110)
編寫插件的目的是給已經有的一系列方法或函數做一個封裝,以便在其他地方重覆使用,方便後期的維護。
避免在插件內部使用 “$” 作為 jQuery 對象的別名,而應當使用完整的 “jQuery” 來表示,這樣可以避免衝突。
(P125)
AJAX 技術通常用於客戶端與伺服器端非同步交換數據,在交換數據時最常用到的方法是 get 和 post 。
【第04章】
(P139)
實體映射技術作為類與表之間的聯繫紐帶,在 ORM 實現中起著至關重要的作用。
(P141)
多對多映射與一對一和一對多映射不同,它需要藉助中間表完成多對多映射信息的保存。
在利用 ORM 技術開發應用程式時,最核心的數據優先處理問題便是 “映射” 。為了成功實現對象與關係之間映射。必須建立的主要文件有 : 映射類 (*.cs 文件) 、 映射文件 (*.hbm.xml 文件) 以及資料庫配置文件 (*.cfg.xml 文件) 。
(P145)
實體數據模型 (EDM) 由三部分組成 : 概念模型由概念架構定義語言來定義,主要描述實體類;存儲模型 (又稱邏輯模型) 由存儲架構定義語言 (.ssdl) 來定義,描述表、列、關係、主鍵及索引等數據對象;映射由映射規範語言 (.msl) 定義,主要包括存儲模型中實體類屬性與存儲模型中列的對應。
【第06章】
(P194)
一位專家曾經說過 : “所有結構良好的面向對象構架都具有清晰的層次定義,每個層次通過一個定義良好的、受控的介面向外提供了一組內聚的服務” 。
(P203)
如果說數據層是積木,那邏輯層就是對這些積木的搭建。
(P205)
在實際項目開發過程中設計資料庫時,會為每張表設計一個與業務無關的主鍵,這主要是因為 :
1. 為了唯一地標識表中的每一條記錄,加快檢索的速度;
2. 建立外鍵約束。為了保證數據的完整性,在資料庫表中建立外鍵是保證數據有效性的方法之一,建立外鍵的前提條件是建立主表的主鍵;
(P217)
框架級的 UI 層一般提供公共的、使用頻率非常高的界面使用方式,它是系統與用戶通信與交流的平臺,離用戶最近,將直接影響用戶對系統的評價結果。作為一個軟體架構,不但應該包含底層的功能,還應該包含 UI 層的公共配置,如皮膚、樣式等。
【第09章】
(P255)
基於角色的訪問控制方法 (RBAC) 有以下兩大顯著特征 :
1. 由於 角色 / 許可權 之間的變化比 角色 / 用戶 之間的變化相對要慢得多,減少了授權管理的複雜性,降低了管理開銷哦;
2. 靈活地支持企業的安全策略,並對企業的變化有很大的伸縮性;
(P258)
要實現基於 RBAC 的許可權管理,需要用戶 (User) 、角色 (Role) 和系統功能模塊 (SystemFunction) 三個類。它們之間的映射關係如下 :
1. User 與 Role 之間的關係為多對多,即一個用戶可以有多個角色,一個角色對應多個用戶;
2. Role 與 SystemFunction 之間的關係為多對多,即一個角色包括多個功能模塊,一個功能模塊可允許多個角色使用;