.NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新。
下面是该预览版的更新列表:
Razor组件改进:
单项目模板
新的Razer扩展
Endpoint路由集成
预呈现
Razor类库中的Razor组件
改进事件处理
Forms & validation
运行时编译
Worker服务模板
gRPC模板
Angular模板已更新为Angular 7
SPA认证
SignalR与Endpoint路由集成
SignalR Java客户端支持长轮询
其他详细信息和已知问题,请参阅发行说明。
开始
要在.NET Core 3.0 Preview 3中开始使用ASP.NET Core,请安装.NET Core 3.0 Preview 3 SDK
如果您使用的是Visual Studio,则还需要安装Visual Studio 2019的最新预览版【译者注:目前VS2019正式版已经发布,直接安装正式版即可】。
注意:要在Visual Studio 2019中使用.NET Core 3.0预览版,需要启用选项以使用.NET Core SDK预览版,方法是通过【工具>选项>项目和解决方案> .NET Core>使用.NET Core SDK预览版】
升级现有项目
将现有的ASP.NET Core应用程序升级到.NET Core 3.0 Preview 3,请按照ASP.NET Core文档中的迁移步骤进行操作。
另请参阅ASP.NET Core 3.0 中的重大更改的完整列表。
Razor组件改进
在前面的预览中,我们介绍了Razor组件,这是一种用ASP.NET核心构建交互式客户端Web UI的新方法。本节将会介绍我们在该预览更新中对Razor组件所做的各种改进。
单项目模板
Razor组件项目模板现在是单个项目,而不是同一解决方案中的两个项目。所编写的Razor组件位于托管它们的ASP.NET Core应用程序中。同一个ASP.NET Core项目可以包含Razor组件、页面和视图。Razor组件模板与其他ASP.NET Core Web应用程序模板一样,默认情况下也启用了HTTPS。
新的Razer扩展
Razor组件使用Razor语法编写,但编译方式与Razor页面和视图不同。为了明确哪些Razor文件应该编译为Razor组件,我们引入了一个新的文件扩展名:.razor。在Razor组件模板中,所有组件文件现在都使用.razor扩展名。Razor页面和视图仍然使用.cshtml扩展名。
只要使用_RazorComponentInclude MSBuild属性将这些文件标识为Razor组件文件,Razor组件仍然可以使用.cshtml文件扩展名来创建。例如,该版本中的Razor组件模板指定Components文件夹下的所有.cshtml文件为Razor组件。
1: <_RazorComponentInclude>Components***.cshtml
请注意,这个版本中的.razor文件有很多限制。有关已知问题和可用解决方案的列表,请参考发布说明。
Endpoint路由集成
Razor组件现在已经集成到了ASP.NET Core中新的Endpoint路由系统。要在应用程序中启用Razor组件支持,需要在路由配置中使用MapComponentHub。
1: app.UseRouting(routes =>
2: {
3: routes.MapRazorPages();
4: routes.MapComponentHub(“app”);
这会将应用程序配置以接受交互式Razor组件的传入连接,并指定根组件App应该在匹配选择器App的DOM元素中呈现。
预呈现
默认情况下,Razor组件项目模板执行服务端预渲染。也就是说当用户浏览您的应用程序时,服务器将对您的Razor组件执行初始化渲染,并将结果作为纯静态HTML传递给浏览器。然后,浏览器将通过SignalR重新连接到服务器,并将Razor组件切换为完全交互的模式。这两个阶段的交付是有益的,因为:
它提高了站点的感知能力,因为用户界面可以更快地出现,而无需等待进行任何WebSocket连接,甚至运行任何客户端脚本。这对连接速度较慢的用户有着更大的影响,如2G/3G手机。
它可以让搜索引擎很容易的搜索到你的应用程序。
对于使用更快连接的用户(如内网用户),此功能的影响较小,因为无论如何用户界面都应该立即出现。
设置预渲染,Razor组件项目模板不会有静态HTML文件。取而代之的是单个Razor页面/Pages/Index.cshtml,使用Html.RenderComponentAsync() HTML帮助器预呈现应用程序内容。该页面还引用components.server.js脚本,在预呈现和下载内容后设置SignalR 连接。由于这是一个Razor页面,像环境标签助手这样的功能就可以工作了。
Index.cshtml
1: @page “{*clientPath}”
2:
3:
4:
5: …
6:
7:
8: @(await Html.RenderComponentAsync())
9:
10:
11:
12:
除了应用程序加载速度更快之外,还可以在浏览器开发工具中查看下载的HTML源代码,从而可以看到预渲染正在进行。Razor组件在HTML中是完全呈现的。
Razor类库中的Razor组件
现在可以将Razor组件添加到Razor类库中,并使用Razor组件从ASP.NET核心项目引用它们。
在Razer类库中创建可重用的Razer组件:
1、创建Razer组件应用程序
1: dotnet new razorcomponents -o RazorComponentsApp1
2、创建Razer类库
1: dotnet new razorclasslib -o RazorClassLib1
3、添加Component1.razor文件到Razer类库
Component1.razor
1:
@message
1: dotnet add RazorComponentsApp1 reference RazorClassLib1
在Razor组件应用程序中,使用@addTagHelper指令从Razor类库导入所有组件,然后在应用程序中使用component1
Index.razor
1: @page “/”
2: @addTagHelper *, RazorClassLib1
3:
4:
改进事件处理
新的eventcallback和eventcallback<>类型使得定义组件回调更加简单。例如,考虑以下两个组件:
MyButton.razor
1: Click here and see what happens!
2:
3: @functions {
4: [Parameter] EventCallback OnClick { get; set; }
5: }
UsesMyButton.razor
1:
通过使用EventCallback<>类型的OnClick处理程序可以是异步的,而不需要对MyButton进行任何其他代码的修改。
UsesMyButton.razor
1:
Forms&validation
此预览版本添加了用于处理表单和验证的内置组件和基础结构。
使用. net进行客户端web开发的一个好处是能够在客户端和服务器之间共享相同的实现逻辑。验证逻辑是一个很好的逻辑。Razor组件中的新的Forms&validation支持包括使用数据注解处理验证的支持,或者可以插入你喜欢的验证系统。
例如,以下Person类型使用数据注解定义验证逻辑:
1: public class Person
2: {
3: [Required(ErrorMessage = “Enter a name”)]
4: [StringLength(10, ErrorMessage = “That name is too long”)]
5: public string Name { get; set; }
6:
7: [Range(0, 200, ErrorMessage = “Nobody is that old”)]
8: public int AgeInYears { get; set; }
9:
10: [Required]
11: [Range(typeof(bool), “true”, “true”, ErrorMessage = “Must accept terms”)]
12: public bool AcceptsTerms { get; set; }
13: }
以下是如何基于Person模型锁创建的验证表单:
1:
2:
3:
4:
5:
6: Name:
7:
9: Age (years):
10:
12: Accepts terms:
13:
深圳网站建设 | |
---|---|
https://www.sz886.com/