本文重点介绍 ASP.NET Core 3.1 中最重要的更改,并提供相关文档的链接。
Razor 组件现作为分部类生成。 可使用定义为分部类的代码隐藏文件来编写 Razor 组件的代码,而不是在单个文件中定义该组件的所有代码。 有关详细信息,请参阅分部类支持。
在 ASP.NET Core 3.0 的 Blazor 中,使用 HTML 帮助程序 (Html.RenderComponentAsync
) 将组件呈现到页面和视图中。 在 ASP.NET Core 3.1 中,使用新的组件标记帮助程序从页面或视图呈现组件:
<component type="typeof(Counter)" render-mode="ServerPrerendered" />
HTML 帮助程序在 ASP.NET Core 3.1 仍受支持,但建议使用组件标记帮助程序。
Blazor 服务器应用现可在初始呈现期间将参数传递给顶级组件。 之前,你只能将参数传递给具有 RenderMode.Static 的顶级组件。 在此版本中,RenderMode.Server 和 RenderModel.ServerPrerendered 均受支持。 任何指定的参数值均序列化为 JSON,并包含在初始响应中。
例如,通过增量 (IncrementAmount
) 预呈现一个 Counter
组件:
<component type="typeof(Counter)" render-mode="ServerPrerendered" param-IncrementAmount="10" />
有关详细信息,请参阅将组件集成到 Razor 页面和 MVC 应用。
HTTP.sys 支持创建匿名请求队列。 在 ASP.NET Core 3.1 中,我们添加了创建 HTTP.sys 请求队列或附加到现有 HTTP.sys 请求队列的功能。 通过创建名为 HTTP.sys 的请求队列或附加到现有 HTTP.sys 请求队列,可实现拥有该队列的 HTTP.sys 控制器进程独立于侦听器进程这一场景。 利用这种独立性,可在侦听器进程重启期间保留现有的连接和排队的请求:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { // ... webBuilder.UseHttpSys(options => { options.RequestQueueName = "MyExistingQueue"; options.RequestQueueMode = RequestQueueMode.CreateOrAttach; }); });
SameSite Cookie 的行为已更改,可反映出即将发生的浏览器更改。 这可能会影响 AzureAd、OpenIdConnect 或 WsFederation 等身份验证场景。 有关详细信息,请参阅 在 ASP.NET Core 中使用 SameSite cookie。
使用 @on{EVENT}:preventDefault
指令属性可阻止事件的默认操作。 在下例中,阻止在文本框中显示键字符的默认操作:
<input value="@_count" @onkeypress="KeyHandler" @onkeypress:preventDefault />
有关详细信息,请参阅阻止默认操作。
使用 @on{EVENT}:stopPropagation
指令属性来停止事件传播。 在下例中,选中复选框可阻止子 <div>
中的单击事件传播到父 <div>
:
<input @bind="_stopPropagation" type="checkbox" /> <div @onclick="OnSelectParentDiv"> <div @onclick="OnSelectChildDiv" @onclick:stopPropagation="_stopPropagation"> ... </div> </div> @code { private bool _stopPropagation = false; }
有关详细信息,请参阅停止事件传播。
当 Blazor 应用在开发过程中运行不正常时,从该应用接收详细的错误信息有助于故障排除和修复问题。 出现错误时,Blazor 应用会在屏幕底部显示一个黄色条框:
有关详细信息,请参阅开发过程中的错误详细信息。