Blazor数据将两个值绑定到选择列表

时间:2020-04-15 15:35:30

标签: asp.net-core blazor

我可以轻松地将一个值绑定到我的模型,但是如果我想绑定两个或多个该怎么办?

示例代码,试图绑定到复杂对象,但失败。

组件:

 <select id="myClassId" @onchange="SelectionChanged" class="form-control">
                            <option value=""></option>
                            @foreach (var myObject in myClassList)
                            {
                                <option value="@myObject">@myObject.AccountName</option>
                            }
                        </select>

代码

 void SelectionChanged(ChangeEventArgs e)
    {
        Console.WriteLine(((MyClass)e.Value).AccountId);
        Console.WriteLine(((MyClass)e.Value).AccountName);

    }

更新:

最终这样做。可能不是最优雅的解决方案,但是我不确定是否还有其他“受支持”的方式。

<select id="myClassId" @onchange="SelectionChanged" class="form-control">
                            <option value=""></option>
                            @foreach (var myObject in myClassList)
                            {
                                <option value="@myObject.AccountId;@myObject.AccountName">@myObject.AccountName</option>
                            }
                        </select>

 void SelectionChanged(ChangeEventArgs e)
    {
        var accountId = e.Value.ToString().Split(";")[0];
        var accountName = e.Value.ToString().Split(";")[1];
        Console.WriteLine(accountId);
        Console.WriteLine(accountName);
    }

1 个答案:

答案 0 :(得分:3)

select的值是一个字符串。这是HTML的基本限制,与Blazor无关。您不能使用对象。最好的选择是分配一个ID或其他一些唯一的标识值,然后在onchange处理程序中,使用该值查找要分配的实际对象。