Blazor/Razor: InputSelect with Enum?



如何使用枚举类的值作为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>

相关内容

  • 没有找到相关文章

最新更新