gpt4 book ai didi

c# - 使用 Blazor 设置复选框值而不绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 09:11:16 24 4
gpt4 key购买 nike

这可能很简单,但我有点卡住了。 我正在从数据库中读取数据,需要一个复选框来反射(reflect) bool 的当前状态,我可以在代码中获取状态,但无法弄清楚如何添加或删除复选框输入的“选中”属性。我正在使用 @onchange 调用函数,不能使用 @Bind。我假设我可以创建一个返回值的函数:"""checked" 并在标签内调用它,但这行不通。

这是我的输入:

<input type="checkbox" class="form-control" value="test" @BoolChecker() @onchange="@function1()" />

这是 BoolChecker() 函数:

public string BoolChecker()
{
if (mybool != null) {
return (mybool == true) ? "checked" : "");
}
else
{
return "";
}
}

我在哪里可以放置 BoolChecker 函数来完成这项工作?如果不清楚,如果 BoolChecker 函数返回“checked”(并且 mybool 为 true),则假设使复选框显示为已选中

最佳答案

这是另一个答案:

@* 注意:此代码片段使用复选框创建双向数据绑定(bind):从下面@code block 中定义的名为 ticked 的变量到输入复选框。最初我们将其值设置为 false,这就是为什么当您运行代码时您会注意到该复选框未被选中的原因。这是一种单向绑定(bind)。

要创建从控件到变量的绑定(bind),您应该添加带有事件处理程序的 @onchange 指令,该事件处理程序从系统获取新值并更新勾选的变量。

您可能已经注意到,与大多数绑定(bind)到其 value 属性的输入元素不同,输入复选框绑定(bind)到 *checked** 属性

value 属性存储应该发布到数据库的值@

<input type="checkbox" value="test" checked="@ticked" @onchange="@((args) => { ticked = (bool)
args.Value; Console.WriteLine(ticked.ToString());} )" />

@code {
bool ticked = false;
}

当然,您可以使用@bind 指令来创建双向数据绑定(bind),如下所示:

<input type="checkbox" value="test" @bind="@ticked" />

请注意,您不能将@onchange 指令与@bind 指令一起使用,因为@bind 指令是一个编译器指令,告诉编译器创建绑定(bind),就像我在第一个输入中手动创建的那样,当然您不能这样做有两个@onchange 属性。

注意:你不能这样做:@onchange="@function1()" 分配给@onchange 指令的值应该是一个 lambda 表达式,例如:

@onchange="@(() => function1)"

仅当您要将值传递给 function1 时才应使用括号,如下所示:@onchange="@(() => function1 (true))"

此外,@BoolChecker() 必须是分配给属性的值。你不能这样使用它......你可以这样做:

@onchange="@(() => BoolChecker)"

关于c# - 使用 Blazor 设置复选框值而不绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60341957/

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