use*_*669 2 c# checkbox blazor
这可能很容易,但我有点卡住了。我正在从数据库读取数据,需要一个复选框来反映布尔值的当前状态,我可以在代码中获取状态,但无法弄清楚如何添加或删除复选框输入的“checked”属性。我正在使用@onchange来调用函数,但不能使用@Bind。我假设我可以创建一个返回值“”或“checked”的函数,然后在标签内部调用它,但这不起作用。
这是我的输入:
<input type="checkbox" class="form-control" value="test" @BoolChecker() @onchange="@function1()" />
Run Code Online (Sandbox Code Playgroud)
这是函数 BoolChecker():
public string BoolChecker()
{
if (mybool != null) {
return (mybool == true) ? "checked" : "");
}
else
{
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在哪里放置 BoolChecker 函数来完成这项工作?如果不清楚,如果 BoolChecker 函数返回“checked”(并且 mybool 为 true),则假设使复选框显示为选中状态
这是另一个答案:
@* 注意:此代码片段使用复选框创建双向数据绑定:从下面的 @code 块中定义的名为 tided 的变量到输入复选框。最初我们将其值设置为 false,这就是为什么当您运行代码时您会注意到该复选框未被选中。这是一种单向绑定。
要创建从控件到变量的绑定,您应该添加带有事件处理程序的 @onchange 指令,该事件处理程序从系统获取新值并更新勾选的变量。
您可能已经注意到,与绑定到其 value 属性的大多数输入元素不同,输入复选框绑定到 *checked** 属性
value 属性存储应发布到数据库的值@
<input type="checkbox" value="test" checked="@ticked" @onchange="@((args) => { ticked = (bool)
args.Value; Console.WriteLine(ticked.ToString());} )" />
@code {
bool ticked = false;
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用 @bind 指令创建双向数据绑定,如下所示:
<input type="checkbox" value="test" @bind="@ticked" />
Run Code Online (Sandbox Code Playgroud)
请注意,您不能将 @onchange 指令与 @bind 指令一起使用,因为 @bind 指令是一个编译器指令,告诉编译器创建绑定,就像我在第一个输入中手动所做的那样,当然您不允许有两个 @ onchange 属性。
注意:你不能这样做:@onchange="@function1()"分配给 @onchange 指令的值应该是 lambda 表达式,例如:
@onchange="@(() => function1)"
仅当要将值传递给 function1 时才应使用括号,如下所示:@onchange="@(() => function1 (true))"
此外,@BoolChecker()必须是分配给属性的值。你不能这样使用它......你可以这样做:
@onchange="@(() => BoolChecker)"
Run Code Online (Sandbox Code Playgroud)