C# 通过重写BlazorComponent.BuildRenderTree(RenderTreeBuilder)创建组件
我在学Blazor。 通过重写C# 通过重写BlazorComponent.BuildRenderTree(RenderTreeBuilder)创建组件,c#,.net,blazor,C#,.net,Blazor,我在学Blazor。 通过重写BlazorComponent类的BuildRenderTree(RenderTreeBuilder)方法,我在C#中创建组件时遇到了一些困难 这是我的班级: public class TestComponent : BlazorComponent { protected override void BuildRenderTree(RenderTreeBuilder builder) { bui
BlazorComponent
类的BuildRenderTree(RenderTreeBuilder)
方法,我在C#中创建组件时遇到了一些困难
这是我的班级:
public class TestComponent : BlazorComponent
{
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenElement(1, "p");
builder.OpenElement(2, "strong");
builder.AddContent(3, "hello");
builder.CloseElement();
builder.CloseElement();
base.BuildRenderTree(builder); // With or without this line it doesn't work
}
}
我在我的页面中使用它,如下所示:
<TestComponent></TestComponent>
我已经测试了它有没有最后一行base.BuildRenderTree(builder)代码>但无论如何它都不会渲染。我把组件做得非常简单(只是一个段落标记、强标记和一个单词的内容),所以我不明白为什么它不会呈现。代码构建得很好
有人能看到我做错了什么吗?首先,不要再使用那个网站了。我通过那个网站学会了Blazor。这是一个很好的网站,这家伙做了一个极好的工作。但遗憾的是,他至少在过去六个月里停止了更新。这些材料已经陈旧无用了。现在,我不知道有什么好的替代品
试试这个:
放置base.BuildRenderTree(生成器)代码>位于BuildRenderTree方法的开头,而不是结尾
使用ComponentBase
而不是BlazorComponent
。。。
BlazorComponent已死亡
始终以序列参数的值0
开始
出于好奇,为什么您要尝试以这种方式构建blazor组件,而不是通过.cshtml
文件以惯用的方式进行构建?部分原因是为了了解它在某些情况下如何始终派上用场。部分原因是为了我可以开始为我未来的项目创建一个可重用blazor组件库。一旦这个简单的示例开始工作,我希望创建更复杂的使用RenderFragment属性的示例,允许我或其他开发人员指定他们自己的HTML,这些HTML可以作为控件的一部分呈现。+1学习如何操作以及如何工作。但也就是说,我认为使用渲染片段创建可重用组件不需要这种方法。我在项目中编写了几个组件,其中组件完全通过.cshtml
定义,但通过RenderFragment
属性填充其内容。在我看来,这种方法更容易使用,这就是我提出这个问题的原因。我正在研究一种类似UsernameValidator的组件,它基于AsyncValidator抽象组件,可能会被这样使用:检查你的用户名是否还没有注册。。。哦,不!这个名字是注册的。选择另一个,还是你想登录?完美的你好非常感谢您的快速响应和良好建议!你知道怎么做很容易吧?因此,我将base.BuilderRenderTree(builder)调用移到了子例程的开头。但是你说我应该继承的这个ComponentBase类呢?我在GitHub的源代码中找不到它。请在哪个程序集和命名空间中找到ComponentBase?有关BlazorComponent死亡的信息,请参见:+1。不幸的是,在教程网站上找不到与此相关的任何内容&qki,开始时组件对象的基类被称为BlazorComponent。。。随着时间的推移,它从BlazorComponent更改为ComponentBase,就像UriHelper更改为NavigationManager一样。随着框架的创建,Blazor中的许多对象都经历了名称更改和更多更改。。。当然,没有教程会告诉你这一点。教程是关于框架的当前状态,而不是关于框架开发的历史。