相关疑难解决方法(0)

在 blazor 中改变组件属性的正确方法

我有两个组件,Child.razorParent.razor.

Child.razorHTML:

<input type="text" value="@Text" />
Run Code Online (Sandbox Code Playgroud)

Child.razorC#:

[Parameter] public string Text { get; set; }
Run Code Online (Sandbox Code Playgroud)

Parent.razorHTML:

<Child @ref="child_1" />
<Child @ref="child_2" />
<Child @ref="child_3" />
Run Code Online (Sandbox Code Playgroud)

Parent.razor C#:

Child child_1;
Child child_2;
Child child_3;

void SetText(Child item, string text)
{
    item.Text = text;
}
Run Code Online (Sandbox Code Playgroud)

我收到警告item.Text = text

警告 BL0005:不应在其组件之外设置组件参数“文本”。

经过一番谷歌搜索,我发现了这个问题:BL0005 - 外部参数使用 - 为什么会出现警告?

答案很好,但它没有提供替代方案(github 上的链接内容也不是很有帮助)。

从父级改变组件参数的正确方法是什么?

编辑

再澄清一点:我知道我可以使用绑定,但我需要能够更改SetText方法内的值,将我想要变异的 Child 作为参数传递。绑定的问题在于变量没有与组件绑定。换句话说:对于 Child 的引用,我不知道应该设置哪个绑定字符串。

例如:

<Child @ref="child_1" …
Run Code Online (Sandbox Code Playgroud)

c# razor asp.net-core blazor

9
推荐指数
1
解决办法
5342
查看次数

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

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

示例代码(直接取自供应商示例)
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{ …
Run Code Online (Sandbox Code Playgroud)

c# blazor visual-studio-2019

2
推荐指数
1
解决办法
358
查看次数

标签 统计

blazor ×2

c# ×2

asp.net-core ×1

razor ×1

visual-studio-2019 ×1