C# Blazor InputSelect绑定值并在select上更新另一个

C# Blazor InputSelect绑定值并在select上更新另一个,c#,blazor,C#,Blazor,在我的输入选择中,我需要能够绑定一个值,并在选项选择/单击更新该值和另一个值 我的对象看起来像什么: public class AccountModel { [Required(ErrorMessage = "Please enter an Office")] public Office[] Office { get; set; } } public class Office { public string Id { get; set; }

在我的输入选择中,我需要能够绑定一个值,并在选项选择/单击更新该值和另一个值

我的对象看起来像什么:

public class AccountModel
{
    [Required(ErrorMessage = "Please enter an Office")]
    public Office[] Office { get; set; }
}

public class Office
{
    public string Id { get; set; }
    public string Name { get; set; }

    public Office()
    {
            
    }

    public Office(string _id, string _name)
    {
        Id = _id;
        Name = _name;
    }
}
输入选择:

<p class="m-0 form-details-lbl">Office</p>
        <InputSelect class="m-0 form-control edit-active"
                     @bind-Value="Account.Office[0].Id">
            <option selected disabled>Select Office</option>
                    @foreach (Office office in OfficeLoc)
            {
            <option value=@office.Id @onselect="() => Account.Office[0].Name = office.Name">@office.Name</option>
            }
        </InputSelect>
        <ValidationMessage For="() => Account.Office" />
办公室

选择办公室 @foreach(OfficeLoc中的办公室) { @办公室。姓名 }
因此,
office[0].Id
被绑定到InputSelect,但是在从办公室列表中选择的选项上,它将同时更新Id和名称。

如果Account.office[0]与数组项的模型相同,我只需设置整个对象

<option value=@office.Id @onselect="() => Account.Office = office">@office.Name</option>
@office.Name
如果它们不是相同的模型,我会使用一种方法:

 <option value=@office.Id @onselect="() => SetOffice(office)">@office.Name</option>

@code {
     void SetOffice(Office newOffice){
             Account.Office[0].Id = newOffice.id;
             Account.Office[0].Name = newOffice.Name;
     }
}
@office.Name
@代码{
无效设置办公室(新办公室){
Account.Office[0].Id=newOffice.Id;
Account.Office[0]。Name=newOffice.Name;
}
}

请注意,我现在正在工作,所以请原谅任何打字错误或不准确之处。你可能需要稍微调整一下,但希望这个想法足够清晰。

我留下了另一个答案,因为看看我错在哪里可能会有用。当我检查时,我意识到
标记上的事件不会触发,甚至包括onclick

试试下面的方法。您可能需要添加一个using for
System.Linq

<select name="offices" id="offices" @onchange="SelectOffice">
    <option selected hidden>Select a room</option>
    @foreach (var office in AvailableOffices)
    {
        <option value=@office.ID>@office.Name</option>
    }
</select>

@code{
    Office SelectedOffice {get;set;} // i.e. Account.Office[0]
    List<Office> AvailableOffices {get; set;}

    void SelectOffice(ChangeEventArgs e)
    {
        SelectedOffice = AvailableOffices.Where(ao => ao.ID.ToString() == e.Value.ToString()).First();
    }
}

选择一个房间
@foreach(var办事处位于可用办事处)
{
@办公室。姓名
}
@代码{
Office SelectedOffice{get;set;}//即Account.Office[0]
列出可用办公室{get;set;}
作废选择办公室(更改事件参数e)
{
SelectedOffice=AvailableOffices.Where(ao=>ao.ID.ToString()==e.Value.ToString()).First();
}
}

这是否涉及不使用SelectInput组件?因为@onselect在使用SelectInput并将值绑定到它时不会被命中。Plus office与Account.office[0]中使用的模型相同。我使用的几乎都是普通元素,我看不出有什么不良影响,但实际表单除外,我需要一种验证多个输入的机制。