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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ch5302-金字塔【区间dp】

正题 题目链接:http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%BE%8B%E9%A2%98/5302%20%E9%87%91%E5%AD%97%E5%A1%94 题目大意 给出一个欧拉序(只要到达每一个结点就把他加进序列的那种,编号会重复),求有多…

常用公有云接入

一、云平台 1、AWS(亚马逊) 2、谷歌 3、AZURE(微软) 4、阿里 5、腾讯 6、华为 二、接入方式 1、REST API 2、SDK 三、云ECS 1、实例 2、系统盘 3、数据盘 4、网关 5、公有IP 6、共享带宽(阿里云)

记录几个部署项目常用的命令

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 查询运行项目的进程 ps -aux|grep farbeat 杀死进程 kill -9 1600336进入目录 cd /www/wwwroot/farbeat/查看文件 ls将日志输出在nohup文件中的方式启动项目(注意.jar文件的名字) nohup j…

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的…

jzoj1768,P2704,POJ1185-[NOI2001]炮兵阵地【状态压缩dp】

正题 POJ链接:http://poj.org/problem?id1185 jzoj链接:https://jzoj.net/senior/#main/show/1768 洛谷评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP2704 正题 每个炮兵攻击范围是上左下右各2格,高山地区不可以放炮兵,求所以…

常用公有云接入——AZURE

一、概念 1、订阅 可以使用订阅为组织内的团队提供访问开发环境(即测试、生产、开发、临时部署等)和项目的权限。针对每个应用程序环境创建不同的订阅,并为每个订阅分配不同的服务管理员帐户,这是保护每个环境安全的一个好方法。…

记录几个常用部署项目的命令,以备后用!

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂”查询运行项目的进程ps -aux|grep farbeat杀死进程kill -9 1600336进入目录cd /www/wwwroot/farbeat/查看文件ls将日志输出在nohup文件中的方式启动项目(注意.jar文件的名字)nohup java -…

分布式测试工具Beetle.DT的部署并进行HTTP,SQL,TCP压测

由于Beetle.DT是一个分布式压力测试工具,所以在使用上并不像普通工具那样安装运行这么简单;由于工具涉及到测试管理中心,节点和管理端等工具; 所以必须要进行相应的部署才能运行。接下来详解一下如果安装Beetle.DT并进行简单的HTT…

Ch4201-楼兰图腾【树状数组】

正题 题目链接:http://contest-hunter.org:83/contest/0x40%E3%80%8C%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%BF%9B%E9%98%B6%E3%80%8D%E4%BE%8B%E9%A2%98/4201%20%E6%A5%BC%E5%85%B0%E5%9B%BE%E8%85%BE 题目大意 给若干个点,求可以得到/\和V的形状各多少个。 解…

常用公有云接入——谷歌

一、概念 1、项目 一个账号有唯一的项目&#xff0c;所有虚拟机都在project里面建。 2、计算引擎 虚拟机资源。 二、创建方式 1、页面控制台 2、gcloud命令行 3、REST API 4、SDK 三、Java SDK 1、创建API服务凭据&#xff0c;并下载P12文件 2、Maven <dependency&…

elementui实现表格单选功能

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不可以多选。效果如下所示&#xff1a; 原来…

element-ui实现表格单选的功能

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是&#xff1a;2022年4月20日13:33:23需求是这样的&#xff1a;用户单击购买产品的按钮时&#xff0c;会出现一个产品的列表&#xff0c;但是呢只能买一种产品&#xff0c;暂时不…

常用公有云接入——阿里

一、术语 中文英文说明地域Region阿里云建设的数据中心。资源创建成功后无法更换地域。可用区Zone同一地域内&#xff0c;电力和网络互相独立的物理数据中心。一个地域下可以有多个可用区。同一地域内可用区之间内网互通并且故障隔离&#xff0c;云服务器 ECS 网络延时低。实例…

ASP.NET Core Razor 视图组件

视图组件简介 在新的ASP.NET Core MVC中&#xff0c;视图组件类似于局部视图&#xff0c;但它们更强大。视图组件不使用模型绑定&#xff0c;仅依赖于您在调用时提供的数据。 视图组件特性&#xff1a; 呈现页面响应的某一部分而不是整个响应包括在控制器和视图之间发现的关…

POJ3468-A Simple Problem with Integers【线段树,树状数组,分块】

正题 题目链接&#xff1a;我是链接 其实洛谷线段树模板也是一样的&#xff1a;三种方法AC评测链接 题目大意 要求支持区间修改&#xff0c;区间求和。 线段树 直接用一个lazy标记&#xff0c;在之前的博客里有说 code1 #include<cstdio> #include<algorithm>…

“JSON parse error: Unexpected character (‘1‘ (code 49))的解决方式

现在是&#xff1a;2022年4月30日22:29:49 大家好&#xff0c;我是雄雄。 刚刚在调用接口的时候&#xff0c;出现了个错误&#xff1a; {"code": 400,"success": false,"data": null,"msg": "JSON parse error: Unexpected char…

三个好用的并发工具类

转载自 三个好用的并发工具类 以前的文章中&#xff0c;我们介绍了太多的底层原理技术以及新概念&#xff0c;本篇我们轻松点&#xff0c;了解下 Java 并发包下、基于这些底层原理的三个框架工具类。 它们分别是&#xff1a; 信号量 Semaphore 倒计时门栓 CountDownLatch …

Error Handling in ASP.NET Core

前言 在程序中&#xff0c;经常需要处理比如 404&#xff0c;500 &#xff0c;502等错误&#xff0c;如果直接返回错误的调用堆栈的具体信息&#xff0c;显然大部分的用户看到是一脸懵逼的&#xff0c;你应该需要给用户返回那些看得懂的界面。比如&#xff0c;“当前页面不存在…

基于python的selenium

一.安装 安装WebDriver 查看chrome版本号&#xff0c;设置-帮助-关于Google chrome&#xff0c;找到版本号。 可以到这个网站进行下载对应版本的chromedriver,如果chrome浏览器版本过高,可以下载最新版的chromedriver进行使用 Chrome for Testing availability 下载下来之后…

多信息登录、检测用户信息是否完善且引导补全

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注&#xff1a;穆雄雄的博客 前言 现在是2022年4月28日13:41:29&#xff01; 今天分享两块内容。 1.需求&#xff1a;用户可以通过手机号、邮箱来注册我们的系统&#xff0c;用户完成之后&#xff0c;可以去完善自己的个人信息…