ASP.NET Core 3.1 的新增功能What's new in ASP.NET Core 3.1

本文内容

本文重点介绍 ASP.NET Core 3.1 中最重要的更改,并提供相关文档的链接。

Razor 组件的分部类支持Partial class support for Razor components

Razor 组件现作为分部类生成。可使用定义为分部类的代码隐藏文件来编写 Razor 组件的代码,而不是在单个文件中定义该组件的所有代码。有关详细信息,请参阅分部类支持

Blazor 组件标记帮助程序和将参数传递到顶级组件 Component Tag Helper and pass parameters to top-level components

在 ASP.NET Core 3.0 的 Blazor 中,使用 HTML 帮助程序 (Html.RenderComponentAsync) 将组件呈现到页面和视图中。在 ASP.NET Core 3.1 中,使用新的组件标记帮助程序从页面或视图呈现组件:

  1. <component type="typeof(Counter)" render-mode="ServerPrerendered" />

HTML 帮助程序在 ASP.NET Core 3.1 仍受支持,但建议使用组件标记帮助程序。

Blazor 服务器应用现可在初始呈现期间将参数传递给顶级组件。之前,你只能将参数传递给具有 RenderMode.Static 的顶级组件。在此版本中,RenderMode.ServerRenderModel.ServerPrerendered 均受支持。任何指定的参数值均序列化为 JSON,并包含在初始响应中。

例如,通过增量 (IncrementAmount) 预呈现一个 Counter 组件:

  1. <component type="typeof(Counter)" render-mode="ServerPrerendered"
  2. param-IncrementAmount="10" />

有关详细信息,请参阅将组件集成到 Razor 页面和 MVC 应用

HTTP.sys 中对共享队列的支持Support for shared queues in HTTP.sys

HTTP.sys 支持创建匿名请求队列。在 ASP.NET Core 3.1 中,我们添加了创建 HTTP.sys 请求队列或附加到现有 HTTP.sys 请求队列的功能。通过创建名为 HTTP.sys 的请求队列或附加到现有 HTTP.sys 请求队列,可实现拥有该队列的 HTTP.sys 控制器进程独立于侦听器进程这一场景。利用这种独立性,可在侦听器进程重启期间保留现有的连接和排队的请求:

  1. public static IHostBuilder CreateHostBuilder(string[] args) =>
  2. Host.CreateDefaultBuilder(args)
  3. .ConfigureWebHostDefaults(webBuilder =>
  4. {
  5. // ...
  6. webBuilder.UseHttpSys(options =>
  7. {
  8. options.RequestQueueName = "MyExistingQueue";
  9. options.RequestQueueMode = RequestQueueMode.CreateOrAttach;
  10. });
  11. });

SameSite Cookie 的中断性变更Breaking changes for SameSite cookies

SameSite Cookie 的行为已更改,可反映出即将发生的浏览器更改。这可能会影响 AzureAd、OpenIdConnect 或 WsFederation 等身份验证场景。有关详细信息,请参阅 在 ASP.NET Core 中使用 SameSite cookie

在 Blazor 应用中阻止事件的默认操作Prevent default actions for events in Blazor apps

使用 @on{EVENT}:preventDefault 指令属性可阻止事件的默认操作。在下例中,阻止在文本框中显示键字符的默认操作:

  1. <input value="@_count" @onkeypress="KeyHandler" @onkeypress:preventDefault />

有关详细信息,请参阅阻止默认操作

在 Blazor 应用中停止事件传播Stop event propagation in Blazor apps

使用 @on{EVENT}:stopPropagation 指令属性来停止事件传播。在下例中,选中复选框可阻止子 <div> 中的单击事件传播到父 <div>

  1. <input @bind="_stopPropagation" type="checkbox" />
  2. <div @onclick="OnSelectParentDiv">
  3. <div @onclick="OnSelectChildDiv" @onclick:stopPropagation="_stopPropagation">
  4. ...
  5. </div>
  6. </div>
  7. @code {
  8. private bool _stopPropagation = false;
  9. }

有关详细信息,请参阅停止事件传播

Blazor 应用开发过程中的错误详细信息Detailed errors during Blazor app development

当 Blazor 应用在开发过程中运行不正常时,从该应用接收详细的错误信息有助于故障排除和修复问题。出现错误时,Blazor 应用会在屏幕底部显示一个黄色条框:

  • 在开发过程中,黄色条框会将你定向到浏览器控制台,你可在其中查看异常。
  • 在生产过程中,黄色条框会通知用户发生了错误,并建议刷新浏览器。

有关详细信息,请参阅开发过程中的错误详细信息