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 forSystem.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]中使用的模型相同。我使用的几乎都是普通元素,我看不出有什么不良影响,但实际表单除外,我需要一种验证多个输入的机制。