如何使用枚举类的值作为InputSelect
的选项?
枚举示例:
public enum Test
{
Test1,
Test2
}
我正在使用带有Razor components
的Blazor。
以下是如何在InputSelect组件中使用枚举的工作示例:
<EditForm EditContext="@EditContext">
<DataAnnotationsValidator />
<div class="form-group">
<label for="name">Enter your Name: </label>
<InputText Id="name" Class="form-control" @bind-Value="@comment.Name"></InputText>
<ValidationMessage For="@(() => comment.Name)" />
</div>
<div class="form-group">
<label for="body">Select your country: </label>
<InputSelect @bind-Value="@comment.Country" >
@foreach (var country in Enum.GetValues(typeof(Country)))
{
<option value="@country">@country</option>
}
</InputSelect>
<ValidationMessage For="@(() => comment.Country)" />
</div>
<p>
<button type="submit">Submit</button>
</p>
</EditForm>
@code
{
private EditContext EditContext;
private Comment comment = new Comment();
protected override void OnInitialized()
{
EditContext = new EditContext(comment);
base.OnInitialized();
}
public enum Country
{
USA = 1,
Britain,
Germany,
Israel
}
public class Comment
{
public string Name { get; set; }
public Country Country { get; set; }
}
}
希望这能帮助。。。
简而言之,它是这样的:
<InputSelect @bind-Value="@YourEnum">
@foreach (var value in Enum.GetValues<YourEnumType>()) {
<option value="@value">@value</option>
}
</InputSelect>
<select>
@foreach (var Item in Enum.GetValues(typeof( DayOfWeek)))
{
<option value="@Item">@Item</option>
}
@enet的答案是正确的。
此外,有时枚举值不接受特定的字符。如果已过滤或更改枚举值以正确存储,则可以编辑枚举值的显示以显示代码中的特定字符。就像下面的枚举一样,我用下划线替换所有空格。因此,您可以将其添加到代码中,以便在下拉列表中正确显示枚举值。
<InputSelect @bind-Value="@updateUserDetails.Nationality" class="dropDownSelectList">
@foreach (var countryName in Enum.GetValues(typeof(Nationality)))
{
<option value="@countryName">@(@countryName.ToString().Replace("_", " ").Replace("HH", "-"))</option>
}
</InputSelect>