通过上面的代码可以看到,原来razor标记和Html全部转换成了C#代码,放到了BuildRenderTree方法输出到了Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder对象__builder中,再通过__builder渲染到页面。而@code代码块则是原样复制。
最关键的是这句代码:
public partial class Counter : Microsoft.AspNetCore.Components.ComponentBase居然是partial类型。
这不就表示,可以像http://ASP.NET WebForm那样把代码放在不同文件中了吗!
示例验证
在Page目录下创建Counter.cs,定义成partial类型。并把@code代码块全部剪切过来,还重载了OnInitializedAsync方法测试能否执行:
public partial class Counter : Microsoft.AspNetCore.Components.ComponentBase
{
protected override Task OnInitializedAsync()
{
currentCount = 100;
return base.OnInitializedAsync();
}