【发布时间】:2021-09-13 06:08:14
【问题描述】:
我的 Blazor 应用中有一个 Razor 页面。据我所知,我们只能将一个模型添加到 Razor 页面 Editform。 我的我的属性分布在两个-三个模型中。如何链接到所有属性?我可以参考任何示例或任何链接?提前致谢。
Razor 页面代码 sn-p & @? 我不确定要使用哪种型号:
<div class="card-body">
<EditForm Model="@?" OnValidSubmit="HandleValidSubmit">
<DataAnnotationsValidator />
<hr />
<div class="form-row">
<div class="form-group col">
<label>Role</label><br />
<InputRadioGroup @bind-Value="Trade.Role" class="form-control">
@foreach (var option in rdOptions)
{
<InputRadio Value="option" /> @option
<text> </text>
}
</InputRadioGroup>
<ValidationMessage For="@(() => Trade.Role)" />
</div>
<div class="form-group col">
<label>Company Name</label>
<InputSelect id="txtCompanyName" class="form-control" @bind-Value="@TradePartner.CompanyName">
<option selected value="-1">-Select-</option>
<option value="CompanyName1">CompanyName1</option>
<option value="CompanyName2">CompanyName2</option>
</InputSelect>
<ValidationMessage For="@(() => TradePartner.CompanyName)" />
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label>Contact Details of your Trading partner</label>
<label>Name</label>
<InputText @bind-Value="Trade.PartnerName" class="form-control" />
<ValidationMessage For="@(() => Trade.PartnerName)" />
</div>
<div class="form-group col">
<label>Email</label>
<InputText @bind-Value="TradePartner.Email" class="form-control" />
<ValidationMessage For="@(() => TradePartner.Email)" />
</div>
</div>
</EditForm>
</div>
.cs代码,有Trade&TradePartner两种模式:
public partial class CreateTrade
{
public Models.Trade Trade { get; set; }
public Models.TradePartner TradePartner { get; set; }
List<string> rdOptions = new List<string> { "Seller", "Buyer" };
protected override void OnInitialized()
{
Trade = new Models.Trade();
TradePartner = new Models.TradePartner();
}
protected async void HandleValidSubmit()
{
await Http.PostAsJsonAsync($"api/Trade/", Trade);
StateHasChanged();
}
}
【问题讨论】:
-
在我看来,如果您在 2 个不同的模型上操作,您应该制作 2 个不同的子组件。这对我来说感觉更干净。
标签: c# razor blazor blazor-server-side blazor-webassembly