【发布时间】:2021-01-25 19:01:37
【问题描述】:
我有一个 InputSelect,它显示基于 Enum 类型的各种选项,因此
<InputSelect @bind-Value=m_ProjectExtended.EstimateType class="form-control form-control-sm">
@foreach (var type in @GetEnumValues<EstimateType>())
{
<option value="@type.Value">@type.Key</option>
}
</InputSelect>
public Dictionary<string, int> GetEnumValues<T>()
{
Dictionary<string, int> values = new Dictionary<string, int>();
foreach (var enumValue in Enum.GetValues(typeof(T)))
{
values.Add(enumValue.GetDisplayAttribute(), (int)enumValue);
}
return values;
}
我缺少的是能够默认选择占位符选项(例如:创建新记录时的“选择选项”),并且能够将 InputSelect 重置为此占位符来自组件的代码。
我在 Angular 中执行此操作的方式是添加值为 -1 的占位符选项,将绑定字段设置为该值,这样就可以了。
问题是我在实际的 C# 枚举中没有 -1 的值,并且我真的不想要一个。
有什么方法可以实现吗?
【问题讨论】:
-
你试过
m_ProjectExtended.EstimateType = values.First().Value.ToString()吗?这将在渲染时将第一个值设置为默认值。 -
当您谈论占位符时,您的意思是假选择“---选择一个值---”还是真正选择的选项?
-
@daniherrera 是的,一个“假”,即:“选择估计类型”
-
@FrancisDucharme 为什么不在您迭代 Enum 以添加动态选项之前添加一个假选项字段。到底是HTML
<option value="" selected>--- select a value ---</option> -
@SuprabhatBiswal 因为选择绑定到
m_ProjectExtended.EstimateType,所以不可能将选择清除回占位符。EstimateType是一个枚举。
标签: c# blazor blazor-server-side .net-5