如何在Blazor中将对象绑定到<select>选项?

时间:2019-12-04 13:00:43

标签: c# html blazor webassembly

我有以下下拉菜单:

public class object {
    public other_object apple {get; set;}
    ...
    public string stuff {get; set;}
    ...
}

public class other_object {
    public string id {get; set;}
    public string name {get; set;}
}

<select class="custom-select" @bind="@object.apple">
     <option value="@object.apple">@object.apple.name</option>
     ...
</select>

我想将选择绑定到一个对象,但只想显示该对象的某些属性。这会给我错误:

  

System.InvalidOperationException:类型“ other_object”不   有一个       关联的TypeConverter,支持从字符串转换。应用       “ TypeConverterAttribute”类型以注册转换器。

这有可能吗?我不太确定类型转换器的工作原理。

2 个答案:

答案 0 :(得分:1)

您不能绑定到other_object,而可以绑定到other_object的字符串属性,也不能使用TypeConverterAttributeother_object转换为字符串。

您的代码可以是:

<select class="custom-select" @bind="@_selected.id">
     <option value="@object.apple.id">@object.apple.name</option>
     ...
</select>
@code {
    private other_object _selected = new other_object();
    ...
}

答案 1 :(得分:1)

如果出于任何原因需要在此处创建对象,您可以这样做:

<InputSelect @bind-Value="@object.apple.id" @onchange="@((args) => @object.apple = new other_object { id = (int)args.Value })" class="form-control">
      <option value="@object.apple.id">@object.apple.name</option>                        
</InputSelect>