ASP.Net Core 2.0中的Razor Page不是WebForm
隨著.net core2.0的發布,我們可以創建2.0的web應用了。2.0中新東西的出現,會讓我們忘記老的東西,他就是Razor Page。下面的這篇博客將會介紹ASP.Net Core 2.0中的Razor Page。
在ASP.Net Core 2.0新特點之一就是支持Razor Page。今天的Razor Page是ASP.Net Core MVC中的一個子集。ASP.Net Core MVC 支持Razor Page意味著Razor Page應用從技術上來說就是MVC應用,同時Razor Page和MVC 視圖有相同的特性。
什么是Razor Page?
對于MVC的開發者來說,可能想問,為什么我們需要另外一種方式來創建我們的ASP.Net Core 站點?是MVC不能滿足我的需求?通過在社區收集的信息,我發現大概有一下原因:
(1)Razor Page對于開發者,甚至是來自其他腳本語言比如:ASP、PHP的開發者來說很容易創建我們的web應用,同時Razor Page要比MVC更加的輕量級。
(2)Razor Page非常適合不大的場景,在這種場景下可以構建控制器和模型來作為單獨的類別。
我完全是不同意這些觀點的,因為MVC在ASP.Net Core 下是輕巧靈活的,我也用MVC來覆蓋較小的場景, 它的方式更快, 因為我使用的東西, 我已經非常了解了。MVC 引入的代碼量并不是很大,因此對于小型的應用來說差異不會很大。
?
創建一個Razor Page應用
在Visual Studio 2017 Preview 2我們可以使用Razor Page的模板來創建項目
點擊確定即可。
項目結構
項目結構很像MVC但是這里沒有Controller和Views文件夾,只有一個Pages文件夾,里面包含了所有的Razor Views.在上下文中Razor Views被叫做“Pages”。這些Pages很像MVC中的Views,但是他們也包含了在MVC中控制器的類。稍后我會介紹Razor Page。Program和Startup類和MVC應用中是一樣的,不僅僅是名字還有代碼。如前所述,Razor Page在MVC的支持下,是其中的一部分。這里可以將表現層和業務邏輯分開。我們可以為頁面創建代碼隱藏文件,并將它命名為PageName.cshtml.cs。代碼隱藏文件所包含的類被稱為“Page Model”。請注意,創建的解決方案中的 About.cshtml、Contact.cshtml、Error.cshtml、Index.cshtml 頁面中都包含代碼隱藏文件。正如創建的Razor Page,它有它自己的模式。稱它為View-ViewModel,它像MVC和MVVM的混合。當我們考慮編碼的時候,Razor Pages會讓我們更接近老的ASP。現在它更object-oriented,更接近MVC。這就是關于頁面的代碼,同時也是默認的Razor Pages應用程序的一部分。
Page 總是用 @page 指令標記,并且@page必須要放到開始的位置,有了它,會告訴視圖引擎,這是Razor Page不是一個標準的MVC View。我們可以指定比常規MVC模型更像視圖模型的模型。實際上,這里的模型更像是控制器和模型的混合。那些使用XAML的人應該發現他熟悉的概念,下面是關于頁面的代碼隱藏或頁面模型。
我們使用Handlers作為處理HTTP請求(GET,POST,PUT,DELETE ..)的方法。例如,我們可以有以下方法:
OnGet / OnGetAsync
OnPost / OnPostAsync
OnDelete / OnDeleteAsync
這些方法將由ASP.NET Core根據HTTP請求的類型自動匹配,就我個人而言, 我發現這些 OnGet () 和 OnPost () 方法比 MVC 控制器的操作更隱秘, 它們清楚地傳達了它們的目的。
我們再看看Razor Page 沒有code-behind的情況:
現在, 讓我們看看只有Page, 而無需代碼隱藏的文件。它的工作方式與代碼隱藏類的版本完全一樣。
方法和屬性在 @functions 節中定義。我只是把頁面模型的內容移到頁面本身, 它就能正常工作了。實際上, 最好將這些代碼隱藏文件和視圖從代碼中清除, 因為視圖中的代碼不容易使用自動測試進行測試。此外, 如果視圖隨著時間的推移變得更加復雜, 那么, 如果只在隱藏代碼文件中增加代碼這種方式是很好的。
最后:
我不知道有多少人在今天使用Razor Page, 但它仍然是輕量級的選擇, 我也認為這可能是一個簡單項目的選擇, 在這里不需要很好的粒度和對代碼的控制, 但我仍然覺得在有些情況下與 MVC 可以一起用。無論如何, 擁有更多的選擇和 entry-level 的技術從來都不是壞事。我希望有明確的使用場景下去使用Razor Page, 否則這項技術將永遠在 MVC 的影響下只是一個小兄弟。
?再次說明:Razor Page 不是ASP.Net WebForm,Razor Page 它是基于 MVC 的大部分, 它不從 ASP.NET WebForm中使用任何組件。Razor Page更 MVVM 的模式, 并遵循單一的責任原則,優于 MVC, 其中一個控制器為多個視圖做許多事情。因此, 每個頁面都有其單頁模型。它的速度更快, 更苗條--控制器被消除 (cshtml 和 Index.cshtml.cs)。更詳細的可以參考:?https://www.youtube.com/watch?v=Lu1wBtf2CKE&t=1780s
相關文章:?
.NET Core 2.0 正式發布信息匯總
.NET Standard 2.0 特性介紹和使用指南
.NET Core 2.0 的dll實時更新、https、依賴包變更問題及解決
.NET Core 2.0 特性介紹和使用指南
Entity Framework Core 2.0 新特性
體驗 PHP under .NET Core
.NET Core 2.0使用NLog
升級項目到.NET Core 2.0,在Linux上安裝Docker,并成功部署
解決Visual Studio For Mac Restore失敗的問題
ASP.NET Core 2.0 特性介紹和使用指南
.Net Core下通過Proxy 模式 使用 WCF
.NET Core 2.0 開源Office組件 NPOI
ASP.NET Core - Razor頁面之Handlers處理方法
ASP.NET Core Razor頁面 vs MVC
Razor Page–Asp.Net Core 2.0新功能 ?Razor Page介紹
原文地址:http://www.cnblogs.com/runningsmallguo/articles/7376565.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的ASP.Net Core 2.0中的Razor Page不是WebForm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker打包 Asp.Net Cor
- 下一篇: C#最佳工具集合:IDE、分析、自动化工