- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能很简单,但我有点卡住了。 我正在从数据库中读取数据,需要一个复选框来反射(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/
我是一名优秀的程序员,十分优秀!