Blazor 服务器为选择下拉列表设置多个默认值

jas*_*son 2 .net c# asp.net blazor blazor-server-side

我有一个 Blazor 服务器应用程序 (.net 6) 页面,其中有一个选择下拉列表,该列表设置为允许多个选定项目。当页面加载时,我需要设置默认值。如果我只想设置一个选定的值,则此代码可以正常工作。但是,如果我想设置多个值,它就不起作用。当我想要设置多个值时,如何设置选择列表默认值?这是我所拥有的:

<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" };
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用。没有错误,它只是没有选择这两个项目。

但是,如果 SelectedCities 不是数组,如下所示:

public string SelectedCities { get; set; } = "New York";
Run Code Online (Sandbox Code Playgroud)

效果很好。

谢谢

Mis*_*goo 6


<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>
Run Code Online (Sandbox Code Playgroud)
@code
{
    string[] Options = new string[] {"Abc","Def","Ghi"};
    string[] chosen = new string[] {"Abc","Ghi"};
    void HandleChange(ChangeEventArgs args)
    => chosen = args.Value as string[];
}
Run Code Online (Sandbox Code Playgroud)

演示