繁体   English   中英

从 Blazor 中的 Select 框中的表中获取值

[英]Getting values from table in a Select box in Blazor

我的 Blazor 项目中有一个 select 框,它使用 MudBlazor 来处理 select 框等组件,我正在尝试创建一个表单来注册员工。 我想以这种形式提取一个branch表,以便用户可以从下拉列表中选择一个分支并将该值发送到具有分支列的register employees表。 问题是 select 框在单击时不显示任何值。 它只显示一个小的空白矩形。 有谁知道我做错了什么?

Razor 页面:

       <MudSelect  @bind-Value="employee.Branch" For="@(()=>employee.Branch)" T="string"  Label="Branch name" AnchorOrigin="Origin.BottomCenter" Required="true">
                        @foreach (var branch in branch)
                        {
                        <MudSelectItem Value="@branch.Id">@branch.Description</MudSelectItem>
                        }         
       </MudSelect>

@code{
   private List<Branches> branch = new List<Branches>();
   private Branches branches = new Branches();
   private List<Branches> GetBranches(string Id)
    {
        branch=employeeService.GetBranches(Id);
        return branch;
    }
}

员工服务.cs:

 public List<Branches> GetBranches(string Id)
        {
            return _dbContext.Branches.Where(x => x.Id == Id).ToList();
        }

问题是你的循环是错误的

@foreach (var **branch** in branch)

而不是 Var 分支使用其他名称,因为您的 Collection name 和 Item name and collection 是相同的分支使用 Item

<MudSelect  @bind-Value="employee.Branch" For="@(()=>employee.Branch)" T="string"  Label="Branch name" AnchorOrigin="Origin.BottomCenter" Required="true">
                    @foreach (var item in branch)
                    {
                    <MudSelectItem Value="@item.Id">@item.Description</MudSelectItem>
                    }         
   </MudSelect>
protected override void OnInitialized()
    {
       GetBranches(with your id );
    }

如果它作为参数出现,那么您需要使用“SetParametersAsync”事件

检查生命周期

由于您没有显示太多上下文,因此这是您的代码的修改版本:

服务和数据类

public class EmployeeService
{
    public async ValueTask<IEnumerable<Branch>> GetBranchesAsync(string Id)
    {
        // Emulate an async data get
        await Task.Delay(100);
        return new List<Branch>
        {
            new Branch { Id = "F", Description = "France"},
            new Branch { Id = "UK", Description = "United Kingdom"},
            new Branch { Id = "P", Description = "Portugal"},
        };
    }
}

public class Branch
{
    public string Id { get; set; } = string.Empty;
    public string Description { get; set; } = string.Empty;
}
public class Employee
{
    public string Id { get; set; } = string.Empty;

    public Branch Branch { get; set; } = new Branch();
}

页:

@page "/"
@inject EmployeeService employeeService

<PageTitle>Index</PageTitle>

<MudSelect @bind-Value="employee.Branch.Id" Label="Branch name" AnchorOrigin="Origin.BottomCenter" Required="true">
    @foreach (var branch in branches)
    {
        <MudSelectItem Value="@branch.Id">@branch.Description</MudSelectItem>
    }
</MudSelect>

@code {
    private IEnumerable<Branch> branches = Enumerable.Empty<Branch>();
    private Branch branch = new Branch();
    private Employee employee = new Employee();

    protected async override Task OnInitializedAsync()
    {
        branches = await employeeService.GetBranchesAsync(string.Empty);
    }
}

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM