blazor - 使用带布尔值的 InputRadio
问题描述
我有一个InputRadio
如下所示的控件:
<InputRadioGroup Name="FooBar" @bind-Value="Foo.Bar">
<InputRadio Name="FooBar" Value=1 />Yes<br>
<InputRadio Name="FooBar" Value=0 />No<br>
</InputRadioGroup>
Foo.Bar
当前是一个可为空的int
,因为它似乎int
是内置InputRadio
控件绑定所期望的。我宁愿设置Foo.Bar
为可空bool
而不是,int
因为我的应用程序有很多是/否问题,并且在代码中使用真/假会使事情变得更容易和更具可读性。
Blazor 中有没有办法对其进行配置,以便InputRadio
控件可以绑定到布尔值?
解决方案
首先,获取布尔值通常是一个复选框,因此您可以先尝试一下。
<EditForm Model="@Foo">
Type: @Foo.Bar.GetType()
<br />
Value: @Foo.Bar
<br /><br />
<InputCheckbox @bind-Value="@Foo.Bar">I understand</InputCheckbox>
</EditForm>
@code{
MyClass Foo { get; set; } = new MyClass();
public class MyClass
{
public bool Bar { get; set; } = true;
}
}
如果您必须使用单选按钮,请继续阅读。
我认为理想情况下,这应该与实际bool
值一起使用,但它似乎没有,这是一个复制品(也许你可以在他们的仓库中用 MS 记录它) - 最初它似乎可以解析,但改变值会抛出它无法从字符串解析。这向我表明他们只支持string
单选int
按钮组。
<EditForm Model="@Foo">
Type: @Foo.Bar.GetType()
<br />
Value: @Foo.Bar
<br /><br />
<InputRadioGroup Name="FooBar" @bind-Value="@Foo.Bar">
<InputRadio Name="FooBar" Value="@true" />Yes<br>
<InputRadio Name="FooBar" Value="@false" />No<br>
</InputRadioGroup>
</EditForm>
@code{
MyClass Foo { get; set; } = new MyClass();
public class MyClass
{
public bool Bar { get; set; } = true;
}
}
解决方案:
- 如果可以,请使用枚举(它基本上是一个整数,这就是它起作用的原因)
- 使用可以解析为所需布尔值的辅助字段(示例如下)
要使辅助字段起作用,您需要可以解析的字符串,并且您可能需要将它们作为视图模型中的变量,因为只是设置Value="@true"
或Value="true"
实际上会尝试查找字段或使用布尔值,而HTML 元素作为字符串匹配。语法有点问题 22。
<EditForm Model="@Foo">
Type: @Foo.Bar.GetType()
<br />
Value: @Foo.Bar
<br />
String Value @Foo.BarString
<br /><br />
<InputRadioGroup Name="FooBar" @bind-Value="@Foo.BarString">
<InputRadio Name="FooBar" Value="@trueVal" />Yes<br>
<InputRadio Name="FooBar" Value="@falseVal" />No<br>
</InputRadioGroup>
</EditForm>
@code{
string trueVal = "true";
string falseVal = "false";
MyClass Foo { get; set; } = new MyClass();
public class MyClass
{
public string BarString { get; set; } = "true";
public bool Bar { get { return bool.Parse(BarString); } set { BarString = value.ToString().ToLowerInvariant(); } }
}
}
推荐阅读
- php - 合并和求和具有相同 id 的项目
- python-3.x - Python,通过 Gmail 发送电子邮件
- php - 干净 URL 的 .htaccess 重写规则不起作用
- unity3d - Unity3d 构建时的图形问题
- swift - 带有 MVVM 和 Action 的 ReactiveSwift
- python-3.x - RasPi Python - ModuleNotFoundError:没有名为“龙卷风”的模块
- python - python pandas不能用重复的键组装
- ruby - 如何转换哈希数组
- azure - 使用 Azure Functions v2 的 IWebJobsStartup
- github - Github:无法从桌面应用程序推送到原点