无法将 <select> 的结果绑定到 bool
Can't bind result of <select> to bool
我的剃须刀组件:
<label for="Title">Leasing?</label>
<select class="form-control" @bind="IsLeasing">
<option value="" selected >Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
code {
private bool isLeasing { get; set; }
}
这段代码的问题是,只要我选择一个选项,呈现的 select 框就会立即切换回初始选项。我是 运行 BlazoredModal 中的那个代码,但我认为这不重要。
A Blazor/Razor <select>
始终适用于类型 string
。因此,您需要来回转换值,如本例所示:
@code {
private bool IsLeasing
{
get => IsLeasingString == "True";
set => IsLeasingString = value.ToString();
}
private string IsLeasingString { get; set; }
}
<label for="Title">Leasing: @IsLeasing</label>
<select class="form-control" @bind="IsLeasingString">
<option value="" selected>Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
PS:@bind 参数 区分大小写,因此您问题中的代码无法按原样编译。请尽可能准确,并尽量避免使用临时代码...
绑定 属性 由于数据类型的不同在这里不起作用。如果 bool 类型和 <select>
适用于字符串,则您尝试绑定的内容。您可以添加一个 onchange
处理程序来执行更改,然后解析结果并将其分配给 IsLeasing
剃刀标记
<select class="form-control" @onchange="(e) => OnLeasingChanged(e.Value)">
<option value="" selected >Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
代码
private bool? IsLeasing { get; set; }
void OnLeasingChanged(object args)
{
if(string.IsNullOrEmpty(args.ToString()))
{
IsLeasing = null;
return;
}
bool.TryParse(args.ToString(),out var result);
IsLeasing = result;
}
我的剃须刀组件:
<label for="Title">Leasing?</label>
<select class="form-control" @bind="IsLeasing">
<option value="" selected >Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
code {
private bool isLeasing { get; set; }
}
这段代码的问题是,只要我选择一个选项,呈现的 select 框就会立即切换回初始选项。我是 运行 BlazoredModal 中的那个代码,但我认为这不重要。
A Blazor/Razor <select>
始终适用于类型 string
。因此,您需要来回转换值,如本例所示:
@code {
private bool IsLeasing
{
get => IsLeasingString == "True";
set => IsLeasingString = value.ToString();
}
private string IsLeasingString { get; set; }
}
<label for="Title">Leasing: @IsLeasing</label>
<select class="form-control" @bind="IsLeasingString">
<option value="" selected>Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
PS:@bind 参数 区分大小写,因此您问题中的代码无法按原样编译。请尽可能准确,并尽量避免使用临时代码...
绑定 属性 由于数据类型的不同在这里不起作用。如果 bool 类型和 <select>
适用于字符串,则您尝试绑定的内容。您可以添加一个 onchange
处理程序来执行更改,然后解析结果并将其分配给 IsLeasing
剃刀标记
<select class="form-control" @onchange="(e) => OnLeasingChanged(e.Value)">
<option value="" selected >Please choose...</option>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
代码
private bool? IsLeasing { get; set; }
void OnLeasingChanged(object args)
{
if(string.IsNullOrEmpty(args.ToString()))
{
IsLeasing = null;
return;
}
bool.TryParse(args.ToString(),out var result);
IsLeasing = result;
}