ASP.NET Core-剃刀页面(.cshtml)vs角2+

时间:2019-05-30 13:00:10

标签: angular asp.net-core razor razorengine

我一直在学习asp.net核心和角度,但是我对asp.net核心剃须刀页面有些困惑。我知道angular是构建动态应用程序的前端框架,并且我知道asp.net核心用于服务器端。但是,asp.net核心还包括剃刀页面(.cShtml),可让您编写html代码并将c#插入其中。剃刀页面还可以包括局部视图等,但是您可以在不使用react或angular等任何内容的情况下构建完整的网站,并且仍然具有相同的动态页面吗? 如果我确实在前端使用了angular,您是否仍然可以使用c#进行表单等的验证?

3 个答案:

答案 0 :(得分:1)

是的,您可以使用Razor页面来构建动态网站,可以使用这样做

@foreach (var item in itemList)
{
   <p>@item</p>
}

如果您决定使用角度学习,我认为您的学习曲线会更陡峭,短期学习会更困难,但是要回答第二个问题,是的,您可以通过存储JWT令牌和将其传递给您对服务器的每个请求的标头中

编辑:我认为Angular 2+的性能要好得多,因为您可以更灵活地进行工作,但需要做很多额外的工作,而剃须刀在短期内会更快,但会难以扩展

答案 1 :(得分:1)

简而言之-Razor是您在经典MVC应用程序中使用的视图引擎,它允许您在html(chtml)中编写服务器端代码(C#),而angular是打字稿上的单页应用程序框架。

您仍然会发现自己仍然使用angular在Razor或NPM软件包中包含某些javascript库,这确实可以归结为同一件事。

使用一个或另一个的决定归结为一些因素,例如但不限于

  • 性能
  • 该框架的技能和经验
  • 托管

通常,您可以同时使用这两种方法来实现自己的要求(建立网站),但是建议您同时使用这两种方法。

当前的趋势似乎是使用Angular作为clientapp,并将.net核心用作业务逻辑CRUD等的后端。

答案 2 :(得分:1)

Razor允许创建的动态页面的内容是“动态的”,其内容可能取决于应用程序逻辑。但是,一旦页面呈现(显示在屏幕上),它就是静态的。如果您只想更改此页面上的一位数字,则需要刷新整个页面。

想象一下,您想在页面上有一个名称列表。您还具有一个将人员添加到同一页面上的列表的表单。自然,您希望在用户按下“提交”按钮后立即在列表中显示新名称。在Razor中,您需要重新绘制整个页面。这对用户是可见的,因为浏览器会闪烁,这是当今人们既不希望也不希望的事情。

要解决动态更改问题而不刷新页面,您需要在Razor页面中添加JavaScript脚本。 JS是可以直接与浏览器对话的东西。 Angular / React / Vue / Blazor本质上类似于JavaScript,但是提供了实现该目标的更加结构化和简化的方式。