【发布时间】:2020-07-02 18:36:02
【问题描述】:
我已经对此错误进行了研究,只是不了解正确的解决方案。
示例代码(直接取自供应商示例)
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 组件参数“文本”不应设置在其组件之外。它将使用所有参数执行此操作。
这是设置要传递给子组件的变量的代码。我看不到其他设置方法。组件没有提供单独的设置器。我真的不明白 VS 团队希望我如何构建和传递这些数据(如果他们的代码编译时出现相同的警告,供应商显然也不会这样做)。
谁能提供一个具体的例子来说明如何做到这一点?
我已经阅读了Correct way to mutate a component property in blazor,但在这种情况下我显然无法修改子组件,因为它是第三方库。
【问题讨论】:
-
我想知道为什么这个菜单是用 C# 构建的。似乎在 Blazor/Html 中定义它的工作量大致相同,并且可以防止 htis 错误。
-
如果它是静态定义的,我会同意。这是他们的示例代码,目前类似于我在我的应用程序中所做的。当然有一些动态元素会根据配置/用户/安全/等添加到菜单中,更有可能是从数据服务返回的项目的 List
反映要显示的项目,因此以一种或另一种方式,可能是动态构建的数组。完全在内联 Blazor 中执行此操作充其量是乏味的。
标签: c# visual-studio-2019 blazor