如何在值之后读取复选框的@onclick 事件
How to read a checkbox's @onclick event after the value
当我使用 @onclick
中的函数作为复选框并检查 @bind-Value
的输入时,返回值不同,看起来 @onclick
事件比 @bind 先执行-值
以身作则
<div>
<MudCheckBox @bind-Checked="@testCheck" Color="Color.Secondary" @onclick="()=> ChecktestBox()"></MudCheckBox>
<p>Value: @testCheck</p>
</div>
@code {
private bool testCheck { get; set; } = false;
private void ChecktestBox() {
MessageBox.Show(testCheck.ToString());
if(testCheck)
....
}
}
结果是@onclick事件中添加的函数即使值为truereturnsfalse
并在消息中使用 Value: @testCheck
returns 正确的值
我该怎么办,从正确的@testCheck
值
我不使用 MudCheckBox,但我可以说,在我的正常实践中,没有必要双向绑定到复选框的值或选中 属性。那是因为 onchange 事件值传递了 属性。如果值不是字符串,则必须强制转换 ChangeEventArgs 才能读取该值。
<input type="checkbox" @onchange="HandleCheck" />
@Message
@code {
string Message;
void HandleCheck(ChangeEventArgs arg)
{
bool IsChecked = (bool)arg.Value;
Message = IsChecked ? "Use this value" : "Don't use this value";
}
}
如果我想设置的 class 中有一个 bool 属性,我通常只会使用双向绑定。
假设 Mud CheckBox 已成功绑定到布尔值,那么您可以为其使用自定义 get; set;
。但是,请小心处理它——您可能不想用它调用涉及的 async Task
。
<input type="checkbox" @bind="CheckTest"/>
@Message
@code {
string Message;
private bool _checkTest;
bool CheckTest
{
get { return _checkTest; }
set { _checkTest = value; HandleCheck(value); }
}
void HandleCheck(bool IsChecked)
{
Message = IsChecked ? "Do something" : "Don't do the thing";
}
}
不过,我觉得有点难以相信 Mud Checkbox 无法正确处理 @onchange
。
当我使用 @onclick
中的函数作为复选框并检查 @bind-Value
的输入时,返回值不同,看起来 @onclick
事件比 @bind 先执行-值
以身作则
<div>
<MudCheckBox @bind-Checked="@testCheck" Color="Color.Secondary" @onclick="()=> ChecktestBox()"></MudCheckBox>
<p>Value: @testCheck</p>
</div>
@code {
private bool testCheck { get; set; } = false;
private void ChecktestBox() {
MessageBox.Show(testCheck.ToString());
if(testCheck)
....
}
}
结果是@onclick事件中添加的函数即使值为truereturnsfalse
并在消息中使用 Value: @testCheck
returns 正确的值
我该怎么办,从正确的@testCheck
值
我不使用 MudCheckBox,但我可以说,在我的正常实践中,没有必要双向绑定到复选框的值或选中 属性。那是因为 onchange 事件值传递了 属性。如果值不是字符串,则必须强制转换 ChangeEventArgs 才能读取该值。
<input type="checkbox" @onchange="HandleCheck" />
@Message
@code {
string Message;
void HandleCheck(ChangeEventArgs arg)
{
bool IsChecked = (bool)arg.Value;
Message = IsChecked ? "Use this value" : "Don't use this value";
}
}
如果我想设置的 class 中有一个 bool 属性,我通常只会使用双向绑定。
假设 Mud CheckBox 已成功绑定到布尔值,那么您可以为其使用自定义 get; set;
。但是,请小心处理它——您可能不想用它调用涉及的 async Task
。
<input type="checkbox" @bind="CheckTest"/>
@Message
@code {
string Message;
private bool _checkTest;
bool CheckTest
{
get { return _checkTest; }
set { _checkTest = value; HandleCheck(value); }
}
void HandleCheck(bool IsChecked)
{
Message = IsChecked ? "Do something" : "Don't do the thing";
}
}
不过,我觉得有点难以相信 Mud Checkbox 无法正确处理 @onchange
。