我可以轻松地将一个值绑定到我的模型,但是如果我想绑定两个或多个该怎么办?
示例代码,试图绑定到复杂对象,但失败。
组件:
<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);
}
答案 0 :(得分:3)
select的值是一个字符串。这是HTML的基本限制,与Blazor无关。您不能使用对象。最好的选择是分配一个ID或其他一些唯一的标识值,然后在onchange处理程序中,使用该值查找要分配的实际对象。