ASP.NET MVC學習之路 - Day7 (1/2)

小青蛙呱呱呱
5 min readMay 31, 2020

--

Bootstrap版本變更

.NET Framework MVC下的Bootstrap版本為3.4.1,若要使用最新版要透過Nuget套件來升級。

當更新成功後,可以檢查Shared\_Layout.cshtml內舊友版本的Bootstrap語法是否在新版中仍被支援,若是沒有的話除了自己手動修改外,也可以到.NET Core專案提取Shared\_Layout.cshtml作為替代來使用要改。同樣的, CRUD的View也需要檢查修改至更新後的版本。

淺談JSON

JSON的全名是JavaScript Object Notation,普遍有Object及Array兩種結構表⽰法,Object用大括號{...}包覆資料,Array則用中括號[...]

{
"Boss" : {
"Name" : "Frog",
"Age" : 20,
"Home" : "Taipei"
},
"Employee" : {
"Name" : ["Lion", "Penguin", "Kangaroo"]
"Age" : [18, 34, 27],
"Home" : ["Taipei", "Taoyuan", "Yilan"]
}
}

JSON僅是一種文字的格式表現,不專屬於某個特定程式語言的型別或物件。

相較於XML,它的體積小,網路傳輸速度較快,儘管格式上看起來很像JS的物件,但其實不是。某些時候會發現JSON內的格式以單引號甚至不加引號的情形下亦可運行,但主要要視使用的程式語言是否能夠解析。

下面附上一些C#對JSON編碼和解析的指令:

// Action中回傳Json資料的語法之一,參數一為要傳遞的資料模型;
// 參數二指定傳出的MIME Type;參數三為編碼格式;
// 參數四審核前端Ajax的type為get才會有反應
return Json(Data, "application/json", Encoding.UTF8, JsonRequestsBehavior.AllowGet);
// 執行JSON編碼的動作,主要是將C#變數轉換成JSON
Json.Encode(C#變數)
// 執行JSON解碼的動作,主要是將JSON轉換成C#變數
Json.Decode(C#變數)
// 可以把帶有HTML標籤的符號轉換成HTML語法,
// 像是網頁內閱讀到的引號"在HTML內會以"呈現
@Html.Raw()
圖片來源:ASP.NET MVC 5.x範例完美演繹 / 奚江華

ORM - Dapper

Dapper是EF外,常見被用來對資料庫進行CRUD動作的ORM套件,不過像是種子資料新增、資料庫部建等功能並未包含在該套件的功能當中。欲使用此ORM套件需要到NuGet去做下載,關於它的更多介紹可以到Dapper Ttutorial查看。

Dapper在執行查詢時的語法可以分為強型別與動態型別兩種回傳方式,其中回傳強型別必須建立Model使其能指定而不用動態識別生成,因此效能上較佳;若不想建立太多Model又或是需要join多張table使得Model建立上複雜繁瑣,便可以採用回傳動態型別的Query指令。

後續的範例會先呈現上述兩種型別的查詢語法,再加入其他動作的語法,其中.Query<>().Excute()是屬於Dapper套件的:

圖一 回傳List<Employee>強型別 - List<T> 效能較好
圖二 回傳Anonymous dynamic List() - GenricList<dynamic> 效能較差
圖三 查詢第一筆資料,如果沒有則回傳null
圖四 查詢唯一一筆資料,如果沒有該筆資料回傳null,多筆則拋出錯誤
圖五 指定多個參數做查詢
圖六 以參數集合查詢

圖七為預存程序的執行方式,這邊我們在先在SQL建立預存程序提供後端程式呼叫使用。

// 至MSSQL建立預存程序
USE Northwind;
GO
CREATE PROCEDURE FindEmployeeByName
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
SET NOCOUNT ON;
SELECT *
FROM Employees
WHERE FirstName = @FirstName AND LastName = @LastName;
GO
圖七 以預存程序查詢
圖八 非同步查詢
圖九 執行Insert新增資料語法
圖十 執行Update修改資料語法
圖十一 執行Delete刪除資料語法

--

--