Вы можете сделать что-то вроде этого:
<EditForm EditContext="@EditContext">
<DataAnnotationsValidator />
<div class="form-group">
<label for="amount">Amount: </label>
<InputNumber Id="amount" Class="form-control" @bind-
Value="@Model.Amount">
</InputNumber>
<ValidationMessage For="@(() => Model.Amount)" />
</div>
<div class="form-group">
<label for="items">Items: </label>
<InputNumber Id="items" Class="form-control" @bind-Value="@Model.Items">
</InputNumber>
<ValidationMessage For="@(() => Model.Items)" />
</div>
</EditForm>
@code
{
private EditContext EditContext;
private Order Model = new Order();
protected override void OnInitialized()
{
EditContext = new EditContext(Model);
EditContext.OnFieldChanged += EditContext_OnFieldChanged;
base.OnInitialized();
}
private void EditContext_OnFieldChanged(object sender,
FieldChangedEventArgs e)
{
Console.WriteLine(e.FieldIdentifier.FieldName);
if (EditContext.Validate())
{
// You can validate the EditContext here, and do necessary
calculation
}
}
}
Надеюсь, это поможет ...
Обновление:
Я никогда не делал этого раньше, но позвольте мне Предлагаем следующее: Определите ваш дочерний компонент следующим образом:
ChildComponent.razor
<div class="form-group">
<label for="item">Item: </label>
<select id="Item" class="form-control-sm" @bind="@Model.Item">
@foreach (var item in items)
{
<option value="@item">@item</option>
}
</select>
<ValidationMessage For="@(() => Model.Item)" />
</div>
@code
{
[Parameter]
public Order Model { get; set; }
}
В родительский компонент вставьте следующее в EditForm
Теперь вы можете выполнять различные операции в дочернем компоненте, как будто его код находится в EditForm.
Примечание: я надеюсь, что эта работа ... никогда не выполнялась раньше, и, конечно, я не выполнял этот код ...
Примечание. Здесь необходимо предоставить список элементов, либо передать его из родительского компонента в качестве параметра компонента, либо создать список элементов в дочернем компоненте, извлечь из базы данных, и др c. * * тысяча двадцать-один