gpt4 book ai didi

C# Blazor 错误 BL0005 - 正确设置组件属性

转载 作者:行者123 更新时间:2023-12-05 08:50:09 26 4
gpt4 key购买 nike

我已经对这个错误做了我能做的研究,只是不理解正确的解决方案。

示例代码(直接取自供应商示例)
https://blazor.syncfusion.com/documentation/menu-bar/getting-started/

<SfMenu Items="@MenuItems"></SfMenu>

@code {
public List<MenuItem> MenuItems = new List<MenuItem>{
new MenuItem{ Text = "File", Items = new List<MenuItem>{
new MenuItem{ Text= "Open" },
new MenuItem{ Text= "Save" },
new MenuItem{ Text= "Exit" }}
},
new MenuItem{ Text = "Edit", Items = new List<MenuItem>{
new MenuItem{ Text= "Cut" },
new MenuItem{ Text= "Copy" },
new MenuItem{ Text= "Paste" }}
},
new MenuItem{ Text = "View", Items = new List<MenuItem>{
new MenuItem{ Text = "Toolbars" },
new MenuItem{ Text = "Zoom" },
new MenuItem{ Text = "Full Screen" }}
},
new MenuItem{ Text = "Tools", Items = new List<MenuItem>{
new MenuItem{ Text= "Spelling & Grammar" },
new MenuItem{ Text= "Customize" },
new MenuItem{ Text= "Options" }}
},
new MenuItem{ Text = "Go" },
new MenuItem{ Text = "Help" }
};
}

这将生成 BL0005 组件参数“文本”不应设置在其组件之外。它将使用所有参数执行此操作。

这是设置要传递给子组件的变量的代码。我看不到其他设置方法。组件没有提供单独的 setter 。我真的不明白 VS 团队希望我如何构建和传递这些数据(如果他们的代码编译时出现相同的警告,供应商显然也不明白)。

谁能提供一个具体的例子来说明如何做到这一点?
我读过Correct way to mutate a component property in blazor但在这种情况下我显然不能修改子组件,因为它是第三方库。

最佳答案

用 [Parameter] 装饰的属性不应该通过代码设置,因为 OnParametersSet 生命周期方法不会被调用,所以它们只应该由 razor 标记中的父组件设置。

在您的情况下,因为值不会改变,所以忽略这些警告应该没问题。如果您在代码隐藏文件 (MyComponent.razor.cs) 中创建菜单项,您可以这样做

public partial class MyComponent
{
protected override void OnInitialized()
{
#pragma warning disable BL0005
// create the menu structure here
#pragma warning restore BL0005
}
}

关于C# Blazor 错误 BL0005 - 正确设置组件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62702955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com