Я пытаюсь привязать поле модели к элементу управления, оно работает с формой, но я пытаюсь реорганизовать компоненты, чтобы можно было повторно использовать элемент управления и его атрибуты в программе.
Вот некоторые фрагменты, чтобы попытаться изобразить мою ситуацию:
Пример модели
public class MyModel
{
public DateTime DateOpened { get; set; }
}
Используется в MyModelFormBase.cs
public class MyModelFormBase : ComponentBase
{
protected MyModal data = new MyModel();
}
Используется в MyModelForm.razor
<MyForm Model="@data" AddFunction="@InsertMyModel" DataDismiss="MyModelForm">
<MyDateInput InputId="dateOpened" InputName="Date Opened" @bind-InputValue="@data.DateOpened" />
</MyForm>
MyForm.razor, использует blazorstrap
<BSForm Model="@Model" OnValidSubmit="@AddFunction"
@ChildContent
<BSButton Color="Color.Primary"
ButtonType="ButtonType.Submit"
data-dismiss="@DataDismiss">
Submit</BSButton>
</BSForm>
@code {
[Parameter]
public Object Model { get; set;}
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public EventCallback AddFunction { get; set; }
[Parameter]
public string DataDismiss { get; set; }
}
MyDateInput.razor, использует blazorstrap
<BSFormGroup>
<BSLabel For="@InputId">@InputName</BSLabel>
<BSInput InputType="InputType.Date" Id="@InputId"
@bind-Value="@InputValue"
ValidateOnChange="true"
@onchange="UpdateData"
/>
<BSFormFeedback For="@(() => InputValue)"/>
</BSFormGroup>
@code {
[Parameter]
public DateTime InputValue { get; set; }
[Parameter]
public EventCallback<DateTime> InputValueChanged { get; set; }
[Parameter]
public string InputId { get; set; }
[Parameter]
public string InputName { get; set; }
private async Task UpdateData()
{
await InputValueChanged.InvokeAsync(InputValue);
}
}
Данные по умолчанию, предоставленные моей службой, правильно отображаются в элементе управленияТаким образом, он правильно привязан вниз, но не передает никаких изменений обратно в модель. : (
Цель состоит в том, чтобы иметь возможность сохранить компонент MyDateInput
, повторяющийся в приложении, который связан с моделью двумя способами, независимо от слоев компонентов, через которые он прошел. Есть идеи?