Blazor/Razor:带有枚举的 InputSelect?

ste*_*wpf 7 razor blazor

如何使用枚举类的值作为 的选项InputSelect

枚举示例:

public enum Test
{
    Test1,
    Test2
}
Run Code Online (Sandbox Code Playgroud)

我正在与 Blazor 一起使用Razor components

Isa*_*aac 18

以下是如何在 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; }
    }
    
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...


Dom*_*eon 6

简而言之,它是这样的:

<InputSelect @bind-Value="@YourEnum">
    @foreach (var value in Enum.GetValues<YourEnumType>()) {
        <option value="@value">@value</option>
    }
</InputSelect>
Run Code Online (Sandbox Code Playgroud)


Han*_*ber 1

<select>

    @foreach (var Item in Enum.GetValues(typeof( DayOfWeek)))
    {
        <option value="@Item">@Item</option>
    }
Run Code Online (Sandbox Code Playgroud)

  • 尽管如果使用传统的 razor 语法和 MVC,这就是一个答案,但问题是在 Blazor 中使用 InputSelect。我赞成对 enhet 的回答。恕我直言,enhet 的答案也许应该标记为正确答案。 (4认同)