【问题标题】:Blazor/Razor: InputSelect with Enum?Blazor/Razor:带枚举的 InputSelect?
【发布时间】:2020-10-30 09:54:46
【问题描述】:

如何将枚举类的值用作InputSelect 的选项?

示例枚举:

public enum Test
{
    Test1,
    Test2
}

我正在使用带有 Razor components 的 Blazor。

【问题讨论】:

  • 您是否总是接受根据用户姓名计数的答案?
  • 感谢所有回答。我选择了我做的那个,因为 if 是最集中的一个,专注于如何使用枚举类的值作为选项。你的不止于此,这可能比所选答案更能帮助某些人,但所选答案更专注。你是这个意思吗?

标签: razor blazor


【解决方案1】:

这是一个如何在 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; }
    }
    
}

希望这会有所帮助...

【讨论】:

    【解决方案2】:

    所以简而言之就是这样:

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

    【讨论】:

      【解决方案3】:
      <select>
      
          @foreach (var Item in Enum.GetValues(typeof( DayOfWeek)))
          {
              <option value="@Item">@Item</option>
          }
      

      【讨论】:

      • 虽然这是一个使用传统剃须刀语法和 MVC 的答案,但问题是在 Blazor 中使用 InputSelect。我赞成改为 enhet 的答案。恕我直言,enhet 的答案也许应该被标记为正确答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多