Razor Pages与服务器端Blazor

时间:2019-12-10 07:49:38

标签: c# razor blazor

Razor Pages用于服务器端Web应用程序,就像过去一样。

Blazor旨在为流行的JavaScript框架(如Angular或React)提供替代方案,以创建主要在客户端浏览器中运行的单页应用程序(SPA)。

但是,我也听说过服务器端Blazor,这使我感到困惑。根据{{​​3}},服务器端Blazor只是服务器上运行的Razor组件。但是Razor Pages和Razor Components之间有什么区别?

注意:我不是要找出哪个更好或“正确的选择”。我只是试图找出存在哪些技术差异。

3 个答案:

答案 0 :(得分:3)

Razor Components的名称是用于创建网页的可重用组件。

Razor pages是网页和控制器在单个文件中的组合。

Razor components主要由Blazor使用,但也可以在Razor Pages中使用,尽管它们被设计为Blazor的更原生。

在没有页面托管的情况下无法显示Razor Component,但是在没有Razor Pages的情况下可以显示Razor components

Razor Components从.NET Core 3.0开始可用。

Razor Pages从.NET Core 2.1开始可用。

编辑

RazorPages在HTML页面和.cs代码文件之间分割。尽管Razor Components.cs和HTML通常在一个文件中,但是它们可以分为HTML和“代码隐藏”文件。

PageModel的{​​{1}}允许ASP.NET Core将控制器返回的数据绑定到页面中的公共属性,然后在页面中使用该属性来引用模型。您可以使用Razor Page类中的属性来引用代码中的数据,并使用HTML中的PageModel属性来引用相同的属性。

@model不会绑定到模型,而是使用参数为它们分配值,类似于将值和事件分配给标准HTML元素的方式。例如seen here

答案 1 :(得分:2)

最大的不同是,剃须刀页面呈现并发送整个页面到客户端。 Blazor服务器端仅通过信号器连接发送DOM更改。因此,没有页面重新加载。您需要在服务器上运行此技术的asp.net核心。

Blazor Webassembly完全是客户端。对DOM的更改是“本地”应用的,这可以从静态Web服务器托管。

答案 2 :(得分:1)

首先,在这里应该提到Blazor Server App和Blazor WebAssembly App的组件模型是相同的。唯一的区别是它们的执行方式。 Blazor服务器应用程序(也称为服务器端Blazor应用程序)在服务器上执行,并且在用户单击按钮元素(例如,浏览器)后,通过这种执行产生的HTML内容通过电子邮件发送到客户端(也许是浏览器) SignalR连接。另一方面,Blazor WebAssembly应用程序(也称为客户端Blazor应用程序)在用户的浏览器上执行;这是C#代码在浏览器中运行的进程中,在该进程的末尾输出HTML内容并在浏览器中呈现。

  

但是Razor Pages和Razor组件之间有什么区别?

Razor组件是Blazor两种执行方式中使用的组件模型。组件是通常从ComponentBase类派生的代码单元。它可能包含两部分:视图部分,由结合Razor语法的HTML标记构成,以及代码部分,其为C#代码。一个组件可以是另一个组件的子组件,但是可以是 Page Component ;这是一个组件,在呈现时会构成整个HTML文档。

Razor Pages是一个Web框架,就像MVC框架一样。当您使用Razor Pages时,您将创建使用 Razor语法和C#的页面,就像Blazor一样,乍一看解释了它们为何如此相似的原因。但是,“剃刀页面”仅在服务器上创建,并且“ HTML内容”被输出(呈现)并推送到用户的浏览器。它们的体系结构是不同的,并且您需要学习一系列的类才能使用它们中的任何一个进行编程。综上所述,唯一的相似之处是使用 Razor语法和C#。语言是造成误解的根源,在编程世界中,语言比以往任何时候都更为重要,例如Blazor的命名(多次发生更改)和Razor Pages都会不经意地将其识别出来。除此之外,您还可以在Razor Pages中嵌入Razor组件,这似乎是造成进一步混乱的根源。