ASP0006:不要使用非文本序列号

规则 ID ASP0006
类别 使用情况
修复是中断修复还是非中断修复 非中断

原因

RenderTreeBuilder 中的方法的调用,其中包含一个不是文本作为参数的序列号。

规则说明

Blazor 的 UI 调和算法依赖于序列号来确定哪些元素已更改。 动态计算序列号或使用计数器可能会导致调和的性能降低。 请改用映射到元素对应的源代码行的文本序列号。 例如,以下代码会生成错误:

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
var seqNum = 1;
builder.OpenElement(seqNum, "div");
builder.CloseElement();

如何解决冲突

要修复违反此规则的问题,请确保调用 RenderTreeBuilder 类上将序列号作为参数的方法使用文本字序列号。

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "div");
builder.CloseElement();

何时禁止显示警告

不禁止显示此规则发出的警告。 使用非文本序列号可能会导致性能降低。