.net5 core Razor項目實戰系列之二:生成項目及框架簡析


項目創建步驟如下:

第1步:創建新項目->ASP.NET Core Web 應用程序

第2步:配置新項目,項目名稱 "AuthManagement"

第3步:創建新的ASP.NET Core Web 應用程序(這里的.net core版本選5.0)。

項目建好后在解決方案管理器中把目錄展開是這樣的:

和WEB API項目相比,可以看到

(1)多了wwwroot的文件夾(一般用於存放css、js、image等文件)和一些 .cshtml和.cshtml.cs文件。

(2)圖中的Pages文件夾就是來放Razor頁面文件的(在訪問Razor頁面的時候不需要將Pages作為路徑的一部分)。

(3)Shared文件夾放一些通用的頁面或布局頁,一般以_開頭來命名(名稱以"_"開頭的頁面在瀏覽器中不可訪問),

         此外,Shared文件夾下的文件被其他頁面引用的時候是不需要加"Shared"這個路徑的。

項目建好后,我們不改動任何文件,直接運行項目,可以得到如下頁面:

可以看到,頁面中的Home和Privacy這2個超鏈接對應解決方案中Pages文件夾下的Index.cshtml和Privacy.cshtml這兩個Razor頁面,

每個可訪問的Razor頁面都有一個對應的.cs文件用於編碼在MVC框架中是用Controller來作為頁面對應的代碼文件的)

即頁面和代碼分離,這樣的好處是頁面/代碼都很清晰,維護起來更容易。

打開Index.cshtml文件,其代碼如下:

這里的代碼很簡單,似乎和頁面呈現的內容不能完全對應,其代碼只對應了紅圈標識的部分:

這是因為該頁面引用了Shared文件夾下的布局頁"_Layout.cshtml",所有頁面通用的部分在布局頁中先定義好,

引用的頁面只需要關注自身要展示的內容即可。

其中,

(1)@page 表示這個頁面是可以被訪問的,即在瀏覽器中輸入指向該頁面的路徑時能被正常顯示,沒有@page指令的.cshtml頁面不能被直接訪問。

 

(2)@model IndexModel表示這個頁面對應的Model是IndexModel,Model是頁面和代碼文件進行數據交換的載體,

一個.cshtml頁面中只能有1條@model指令。

(3)@{
                   ViewData["Title"] = "Home page";
         }

的作用是給ViewData["Title"]賦值,即頁面的Title ,我們在瀏覽頁面的時候可以看到如下:

因為Index.cshtml使用了布局文件,打開Shared文件夾下的布局文件_Layout.cshtml,可以看到對應的頁面代碼:

如果我們不想顯示" - AuthManagement"這一段,只要在布局文件中去掉就可以了。

================================================================

另外,Razor框架的Pages文件夾下還約定了_ViewImports.cshtml和_ViewStart.cshtml這兩個文件,其中的代碼分別如下:

_ViewImports.cshtml

@using AuthManagement
@namespace AuthManagement.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

_ViewStart.cshtml

@{
    Layout = "_Layout";
}

_ViewImports.cshtml用於給每個頁面導入通用的指令信息,如果某個頁面的指令不是通用的,在那個頁面中單獨導入就可以了。

_ViewStart.cshtml用來指定Razor頁面要套用的布局文件,如果后續項目升級后換了一種風格,只需要改一下這個頁面就可以了,

非常方便,默認情況下,在Pages文件夾下新增的每個Razor頁面都會受到_ViewStart.cshtml的作用(即自動使用布局頁),

如果不想使用布局頁,只要在當前頁面加入如下一行代碼就可以了(見紅色部分)

@page
@model IndexModel
@{
    Layout = null;
    ViewData["Title"] = "Home page";
}

再次瀏覽頁面,效果如下:

當然,如果不使用布局頁,我們還需要在頁面中將<html><head><body>等一個標准html文件中的標簽進行補齊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM