在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
随着 .NET 8.0 的发布,全栈 Web UI 框架 Blazor 有了显著的发展。这次更新带来了各种功能和增强功能,使开发人员能够使用 C# 和 .NET 构建交互式的现代网络应用程序。
在本文中,我们将深入探讨Blazor .NET 8.0的关键方面,探索新的渲染模式、项目模板、工具改进等。
Blazor在.NET 8.0中引入了三种渲染模式:
静态服务器渲染: 生成静态HTML以实现最佳性能。
交互式服务器渲染:利用服务器端 ASP.NET Core 运行时进行初始渲染和交互。
其中一个亮点是交互式自动渲染模式,它结合了基于服务器端的内容渲染以及使用 .NET WebAssembly 运行时在客户端进行的后续渲染和交互。这使得应用程序启动体验更快,对开发人员来说是一个有吸引力的选择。
.NET 8.0 引入了 Blazor Web App 模板,这是一个结合了 Blazor Server 和 Blazor WebAssembly 托管模型优势的统一起点。
此模板包含了新的功能,如静态服务器渲染、流式渲染、增强的导航和表单处理。 项目模板的整合简化了开发过程。
传统的JS初始化程序已被替换为新的Blazor Web应用程序集,提供了更好的控制权,例如自定义加载过程、日志记录级别和其他选项。 这一变化提升了开发体验,并与.NET 8.0中统一托管模型的目标保持一致。
为了提供更具针对性的覆盖,关于预渲染和集成的指南已被拆分成单独的文章。 此更改旨在简化理解和实施,使开发人员更易于遵循最佳实践。
Blazor Web 应用现在会自动保留在预渲染期间创建的任何已注册的应用级状态。 这消除了对持久组件状态标记助手的需求,简化持久化和读取组件状态的过程。
.NET 8.0 为 Blazor 组件带来了改进的表单处理功能,包括模型绑定和数据验证。 该框架尊重数据契约属性,为开发者提供更多控制,以便将表单数据绑定到模型。 防伪支持的引入为表单提交增加了额外的安全层。
Static server rendering in Blazor .NET 8.0 引入了页面导航和表单处理方面的显著改进。 传统上,在导航或提交表单时会发生整个页面的刷新。
通过增强的导航功能,Blazor拦截请求并执行获取请求,流畅地将渲染的响应内容补丁插入浏览器的DOM。 这避免了整个页面的刷新,从而使页面加载更快速和流畅,同时保留更多的页面状态。
当加载 Blazor 脚本 (blazor.web.js) 时,增强的导航默认启用,并且可以为特定表单选择性启用。 新的增强导航 API 允许开发人员以编程方式刷新当前页面,从而为用户体验提供更多控制。
Blazor .NET 8.0 引入了流渲染,这是一项强大的功能,可以提升执行长时间异步任务页面的用户体验。 通过流式渲染,当异步操作正在进行时,页面可以渲染占位符内容。
一旦完成,更新后的内容将通过同一响应连接流式传输到客户端,并无缝地补丁到DOM中。 这种方法确保应用程序的主布局快速渲染,并在内容可用后立即更新页面。
Blazor 现在支持使用 Inject
属性注入键控服务。 密钥在依赖注入场景中启用服务注册和消费的范围。
新的InjectAttribute.Key
属性允许开发人员指定要注入服务的键,为服务范围打开了新的可能性。
HttpContext
Blazor .NET 8.0 引入了从静态服务器组件中作为级联参数访问当前 HttpContext
的能力。 此增强功能特别适用于检查和修改与HTTP上下文相关的标头或其他属性。
Blazor .NET 8.0 开启了在 HTTP 请求上下文之外渲染 Razor 组件的可能性。这种灵活性允许开发人员在独立于 ASP.NET Core 托管环境的情况下,将 Razor 组件直接渲染为字符串或流。
此功能在需要生成HTML片段(例如电子邮件或静态网站内容)的场景中尤其方便。
在 Blazor .NET 8.0 中,引入了SectionOutlet
和SectionContent
组件,革新了内容管理。 这些组件允许开发者在布局中定义占位符,之后由特定页面填充。
可以使用唯一的名称或对象ID来引用部分,从而在构造动态网页布局时提供灵活性和可重用性。
Blazor Web 应用程序在 .NET 8.0 中现在拥有强大的错误页面支持,允许开发人员为使用 ASP.NET Core 异常处理中间件定义自定义错误页面。
默认错误页面(Components/Pages/Error.razor)提供了一致的用户体验。 即使启用了交互功能,错误页面也会作为静态服务器组件呈现,以确保在异常情况下的稳定性。
QuickGrid
从实验到必不可少QuickGrid
,该高性能网格组件,已从实验状态毕业,成为 .NET 8 中 Blazor 框架的一个组成部分。
此组件简化了表格数据的显示,同时提供了排序、过滤、分页和虚拟化等强大功能。 在 ASP.NET Core Blazor QuickGrid
文档中了解更多关于 QuickGrid
的信息。
Blazor .NET 8.0 引入了对客户端路由的支持,使用标准 URL 片段直接导航到页面上的特定 HTML 元素。 通过使用标准的id属性为HTML元素指定一个标识符,当URL片段与该元素的标识符匹配时,Blazor会自动滚动到该元素。
Blazor .NET 8.0 通过引入根级级联值来增强级联值,这些值可以为整个组件层次结构注册。 现在支持命名级联值和更新通知的订阅,从而提供了更大的灵活性和控制力。
在 Virtualize 组件上新增的EmptyContent
参数使开发者能够在组件加载后提供内容,当项为空或ItemsProviderResult<T>.TotalItemCount
为零时。
这使开发人员能够创建更直观和用户友好的界面。
Blazor .NET 8.0 引入了在没有剩余的交互式服务器组件时关闭电路的功能。 此优化释放了服务器资源并提高了整体性能。
此外,开发者现在可以使用 CircuitHandler
上的 CreateInboundActivityHandler
方法监控服务器端应用中的入站电路活动。
Jiterpreter 是 .NET 8 的一个新运行时功能,在 WebAssembly 上运行时引入了部分即时 (JIT) 编译支持。 这将改善运行时性能,为与Blazor WebAssembly应用程序交互的用户提供更流畅的体验。
Blazor WebAssembly 的 AOT 编译现在默认使用 WebAssembly 定宽 SIMD 和 WebAssembly 异常处理。 这种战略选择显著提升了运行时性能,提供了更高效、更灵敏的用户体验。
Blazor WebAssembly现在使用Webcil,这是一种适合网络的.NET程序集封装方式。 这确保在屏蔽下载或使用 .dll 文件的环境中保持兼容性,从而解决部署难题。 Webcil在默认情况下启用用于Blazor WebAssembly应用程序。
在 .NET 8 中,调试 Blazor WebAssembly 应用变得更加简化。调试器现在从 Visual Studio 首选项中配置的位置下载符号数据,从而增强了使用 NuGet 包的应用的调试体验。
此外,现在支持在 Firefox 中进行调试,需配置远程调试并通过 .NET WebAssembly 调试代理进行连接。
在 .NET 8.0 中的 Blazor WebAssembly 消除了在指定内容安全策略 (CSP) 时启用 unsafe-eval 脚本源的需要。 此增强功能简化了安全配置,使得在Blazor WebAssembly应用程序中更容易执行强大的CSP(Content Security Policy,内容安全策略)。
ComponentBase.DispatchExceptionAsync
的引入使开发人员能够处理在 Razor 组件生命周期调用堆栈之外抛出的异常。
此功能允许组件代码将异常视为生命周期方法异常,从而确保更一致和受控的错误处理机制。
Iron Software 的 Iron Suite 由 Iron Software 开发,包含多个实用的库,帮助开发人员构建强大的 Blazor 应用程序。它提供添加 PDF 功能、Excel 或 CSV 文件功能、图像转文本识别、条形码 & QR 码生成和读取,以及压缩或解压文件的解决方案。
Iron Suite 是使用 Blazor WebAssembly 托管模式或任何微软技术(包括 Blazor WebAssembly 应用程序、Blazor 服务器应用程序、ASP.NET Core MVC APP、ASP.NET core WEB API 或任何版本的.NET 运行时构建的任何应用程序)进行网络开发时可以考虑的最佳选择。
IronPDF 用于无缝创建、操作和提取 PDF 文件中的数据。
IronPDF的突出功能是将HTML转换为PDF,并完全保留布局和样式。 非常适合从网页内容生成PDF,包括报告、发票和文档。 您可以将HTML文件、URL或HTML字符串转换为PDF文件。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
IronOCR(光学字符识别)用于从扫描图像或PDF中提取文本,提高数据可访问性。
IronXL 用于高效读取、编写和操作 Excel 电子表格。
IronBarcode 用于生成和读取各种格式的条形码,便于数据编码和检索。
IronQR 用于使用机器学习创建和读取QR码
IronWebScraper 用于从网站提取有价值的数据,增强基于网络的应用程序的功能。
IronZIP 用于压缩和解压文件,简化数据存储和传输过程。
以仅仅两个单独产品的价格获取整个套件,最大化您的投资价值。
无论您使用的是Windows、macOS还是Linux,Iron Suite都能确保(几乎)所有平台的兼容性。
体验从下载到生产的快速旅程,只需短短5分钟即可启动运行。
查阅所有功能的详细文档和示例,为整个开发过程提供清晰的指导。
有一支专门的工程师团队在每周五天24小时内随时为您解答任何疑问,确保开发体验顺畅。
总之,Blazor .NET 8.0 的发布标志着使用 C# 和 .NET 进行全栈 Web UI 开发的一个重要里程碑。
引入新的渲染模式、Blazor Web App 模板、增强的导航以及众多其他功能,使其成为开发人员创建现代和交互式 Web 应用程序的吸引力选择。
Blazor .NET 8.0 还引入了具有吸引力的功能,如增强的表单处理、流式渲染以及注入键控服务的能力,为开发增加了深度和灵活性。
Iron Software推出的Iron Suite完善了Blazor的功能,提供了一个全面的工具包,用于.NET生态系统中的文档相关任务。
Blazor .NET 8.0 通过使用 Iron Suite 赋予开发者创建强大且功能丰富的 Web 应用程序的能力。
强大的功能、改进的性能以及充满活力的开发者社区的支持,使Blazor成为现代网页开发的一个引人注目的选择。