按照asp.net core WEB應用程式向導,建立一個工程之後
你會發現如下幾個目錄和檔案
wwwroot:放置網站的靜态檔案的目錄
Pages:放置razor頁面的目錄
appsettings.json:是應用的配置檔案
bower.json:靜态資源包管理的配置檔案
Program.cs:這個程式負責承載ASP.NET Core應用
Startup.cs:初始化service的配置,初始化請求管道
下面我們單獨說一下Pages目錄
_Layout.cshtml 是整個網站的主機闆檔案,
除了在這裡寫布局頁面的代碼外,
你還可以把一些基礎的樣式和腳本放在這裡,
_ViewStart.cshtml 負責設定所有Razor頁面都會用到的Layout屬性,
_ViewImports.cshtml 負責設定所有頁面都會用到的指令,比如引入什麼類庫等
_ValidationScriptsPartial.cshtml 負責引用驗證腳本,比如jquery的validation元件
在appsettings.json檔案中,你可以防止資料庫連結字元串,比如這樣:
ConnectionStrings就是資料庫連結字元串;
在Startup.cs檔案中,有一個ConfigureServices方法,你可以通過依賴注入的方式,加載資料庫連接配接上下文,比如這樣:
說明:這裡用到了Microsoft.EntityFrameworkCore,要先通過nuget包管理器,引入包,相關内容不作贅述;
接下來你就可以寫實體,完成相應資料的增删改查了;
往往我們寫了實體類型,還需要把實體類型做成資料庫結構,非常麻煩
這裡你可以用microsoft.visualstudio.web.codegeneration.design,這個包來完成相應的工作,相關的指令如下:
第一行是安裝這個工具包;
第二行是根據DbContext所引用的實體類,生成資料庫表結構的同步代碼;
第三行是更新資料庫;
這個工具包是不是隻支援EF,還有待考察。
好,我們現在看看怎麼通過資料庫上下文把資料從資料庫中拿出來
在Pages目錄下,建立一個Razor頁面
在相應的cshtml.cs檔案中,撰寫如下代碼:
說明:Movie是與資料庫表結構對應的實體類;
Razor頁面繼承自PageModel類,按照約定,類名遵從[PageName]Model這樣的命名方式
構造函數通過依賴注入獲得資料庫通路上下文執行個體;
我們再來看看.cshtml檔案的代碼:
Razor引擎可以把上面這些HTML代碼轉成C#代碼或者轉成Razor過度代碼;
當一個 @ 符号後面跟的是Razor保留關鍵字的話,他會被轉義成Razor過度代碼,否則會被轉義成C#代碼;
這是在編譯期完成的工作,是以不會影響運作期的執行效率;
@page指令使得這個頁面變成了一個ASP.NET MVC的Action
這個指令必須是在Razor Page的第一個指令
來看看下面這行代碼:
這行代碼的特殊之處在于,不會存在違法通路的異常,
也就是說model, model.Movie 和model.Movie[0] 的值是 null 或者empty時,不會報異常;
這個指令使得cshtml.cs檔案中的IndexModel類,在這個Razor Page中有效
你可以在Razor Page頁面中設定ViewData的鍵值,在_Layout.cshtml模版頁面中使用你設定的ViewData
在Razor Page中,用下面的方式寫注釋
在_ViewStart.cshtml檔案中,我們為所有的頁面設定了主機闆頁,代碼如下:
以後的文章裡我們會說到!