ASP.NET Core 3.1 的新功能
本文會重點說明 ASP.NET Core 3.1 最重要的變更,附有相關文件的連結。
Razor 元件的部分類別支援
Razor 元件現在會產生為部分類別。 Razor 元件的程式碼可以使用定義為部分類別的程式碼後置檔案撰寫,而不是在單一檔案中定義元件的所有程式碼。 如需詳細資訊,請參閱部分類別支援。
元件標記協助程式並將參數傳遞至最上層元件
在 Blazor ASP.NET Core 3.0 中,元件會使用 HTML 協助程式 (Html.RenderComponentAsync
) 轉譯成頁面和檢視。 在 ASP.NET Core 3.1 中,使用新的元件標記協助程式,從頁面或檢視轉譯元件:
<component type="typeof(Counter)" render-mode="ServerPrerendered" />
ASP.NET Core 3.1 仍支援 HTML 協助程式,但建議使用元件標記協助程式。
Blazor Server 應用程式現在可以在初始轉譯期間,將參數傳遞至最上層元件。 先前,您只能使用 RenderMode.Static 將參數傳遞至最上層元件。 在此版本中,RenderMode.Server 和 RenderMode.ServerPrerendered 都受到支援。 任何指定的參數值都會序列化為 JSON,並包含在初始回應中。
例如,以遞增量 (IncrementAmount
) 預先轉譯 Counter
元件:
<component type="typeof(Counter)" render-mode="ServerPrerendered"
param-IncrementAmount="10" />
如需詳細資訊,請參閱將元件整合至 Razor Pages 和 MVC 應用程式。
支援 HTTP.sys 中的共用佇列
HTTP.sys 支援建立匿名要求佇列。 在 ASP.NET Core 3.1 中,我們已新增建立或附加至現有具名 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 的重大變更
SameSite Cookie 的行為已變更,以反映即將推出的瀏覽器變更。 這可能會影響 AzureAd、OpenIdConnect 或 WsFederation 等驗證案例。 如需詳細資訊,請參閱在 ASP.NET Core 中使用 SameSite Cookie。
防止 Blazor 應用程式事件的預設動作
請使用 @on{EVENT}:preventDefault
指示詞屬性來防止事件的預設動作。 在下列範例中,系統會防止在文字方塊中顯示按鍵字元的這項預設動作:
<input value="@_count" @onkeypress="KeyHandler" @onkeypress:preventDefault />
如需詳細資訊,請參閱防止預設動作。
停止 Blazor 應用程式中的事件傳播
請使用 @on{EVENT}:stopPropagation
指示詞屬性來停止事件傳播。 在下列範例中,選取核取方塊可防止從子系 <div>
傳播 Click 事件至父代 <div>
:
<input @bind="_stopPropagation" type="checkbox" />
<div @onclick="OnSelectParentDiv">
<div @onclick="OnSelectChildDiv" @onclick:stopPropagation="_stopPropagation">
...
</div>
</div>
@code {
private bool _stopPropagation = false;
}
如需詳細資訊,請參閱停止事件傳播。
Blazor 應用程式開發期間的詳細錯誤
當 Blazor 應用程式在開發期間無法正常運作時,接收來自應用程式的詳細錯誤資訊可協助進行疑難排解並修正問題。 發生錯誤時,Blazor 應用程式會在畫面底部顯示金色列:
- 在開發期間,金色列會將您導向瀏覽器主控台,您可以在該處看到例外狀況。
- 在生產環境中,金色列會通知使用者發生錯誤,並建議重新整理瀏覽器。
如需詳細資訊,請參閱處理 ASP.NET Core Blazor 應用程式中的錯誤。