Blazor Server 为 select 下拉列表设置多个默认值
Blazor Server set multiple default values for select drop down list
我有一个 Blazor 服务器应用程序 (.net 6) 页面,其中有一个 select 下拉列表,该列表设置为允许多个 selected 项目。我需要在页面加载时设置默认值。如果我只想设置一个 selected 值,此代码可以正常工作。但是,如果我想设置多个值,它就不起作用。当我想设置多个值时,如何设置 select 列表默认值?这是我拥有的:
<select value ="@SelectedCities" @onchange="@((ev) => ListChangeEvent(ev, row_id ))" class="form-select" aria-label="Default select example" multiple rows="4">
@foreach (var i in item.values.ToList())
{
<option id="@i.Key">@i.Value</option>
}
</select>
public string[] SelectedCities { get; set; } = new[] { "New York", "Pittsburgh" };
以上代码无效。没有错误,根本就没有select这两项。
但是,如果 SelectedCities 不是一个数组,就像这样:
public string SelectedCities { get; set; } = "New York";
它工作正常。
谢谢
<select multiple @onchange=HandleChange>
@foreach(var option in Options)
{
<option @key=@option selected=@(chosen.Contains(option)) value=@option>@option</option>
}
</select>
<pre>@string.Join(", ",chosen)</pre>
@code
{
string[] Options = new string[] {"Abc","Def","Ghi"};
string[] chosen = new string[] {"Abc","Ghi"};
void HandleChange(ChangeEventArgs args)
=> chosen = args.Value as string[];
}
我有一个 Blazor 服务器应用程序 (.net 6) 页面,其中有一个 select 下拉列表,该列表设置为允许多个 selected 项目。我需要在页面加载时设置默认值。如果我只想设置一个 selected 值,此代码可以正常工作。但是,如果我想设置多个值,它就不起作用。当我想设置多个值时,如何设置 select 列表默认值?这是我拥有的:
<select value ="@SelectedCities" @onchange="@((ev) => ListChangeEvent(ev, row_id ))" class="form-select" aria-label="Default select example" multiple rows="4">
@foreach (var i in item.values.ToList())
{
<option id="@i.Key">@i.Value</option>
}
</select>
public string[] SelectedCities { get; set; } = new[] { "New York", "Pittsburgh" };
以上代码无效。没有错误,根本就没有select这两项。
但是,如果 SelectedCities 不是一个数组,就像这样:
public string SelectedCities { get; set; } = "New York";
它工作正常。
谢谢
<select multiple @onchange=HandleChange>
@foreach(var option in Options)
{
<option @key=@option selected=@(chosen.Contains(option)) value=@option>@option</option>
}
</select>
<pre>@string.Join(", ",chosen)</pre>
@code
{
string[] Options = new string[] {"Abc","Def","Ghi"};
string[] chosen = new string[] {"Abc","Ghi"};
void HandleChange(ChangeEventArgs args)
=> chosen = args.Value as string[];
}