#c# #events #blazor #onchange #syncfusion
#c# #Мероприятия #blazor #onchange #syncfusion
Вопрос:
Я пытаюсь создать раздел «Редактировать» для редактирования объектов и обновления их в базе данных:
Прежде всего, я получаю текущий объект и загружаю поля ввода в зависимости от PropertyType (string = textfield, int = средство выбора номера и т.д.):
Объект:
Поместите поля ввода:
<EditForm @ref="EditForm" Model="ObjectType" novalidate>
<DataAnnotationsValidator />
@foreach (var property in EditObject.GetType().GetProperties())
{
@if (property.PropertyType.Name.Equals("String"))
{
<SfTextBox Placeholder="@property.Name"
Type="InputType.Text"
@onchange="@((Microsoft.AspNetCore.Components.ChangeEventArgs __e) => property.SetValue(EditObject, __e.Value))"
Value="@property.GetValue(EditObject, null)"
CssClass="create-model-item">
</SfTextBox>
}
else if (property.PropertyType.Name.Contains("Int"))
{
<SfNumericTextBox TValue="int?" Placeholder="Choose a Number Value="@property.GetValue(EditObject, null)" CssClass="create-model-item">
<NumericTextBoxEvents TValue="int?"
ValueChange="@((Syncfusion.Blazor.Inputs.ChangeEventArgs<int?> __e) => property.SetValue(EditObject, __e.Value))">
</NumericTextBoxEvents>
</SfNumericTextBox>
}
}
<SfButton OnClick="SendForm" IsPrimary="true" CssClass="mb-3">Create</SfButton>
</EditForm>
Теперь я хочу изменить данные свойств в «EditObject» на новые значения, которые ввел пользователь, это делается методом «onChange»:
@onchange="@((Microsoft.AspNetCore.Components.ChangeEventArgs __e) => property.SetValue(EditObject, __e.Value))"
Однако это выдает мне эту ошибку:
Кто-нибудь знает, что происходит не так?
Заранее спасибо!:)
Ответ №1:
Вам не нужно указывать тип события.
Ваш @onchange
код необходимо изменить на @onchange="@((__e) => { property.SetValue(EditObject, __e.Value); })"
Это должно остановить ошибку.
Ответ №2:
Для компонента Textbox поддерживается двусторонняя привязка. Поэтому для обновления новых значений свойства модели не требуется никакого дополнительного метода. Если вы использовали двустороннюю привязку, она будет обновлена по умолчанию. Итак, пожалуйста, попробуйте с атрибутом @bind-Value.
Также взгляните на приведенную ниже ссылку UG.
UG ссылка:https://blazor.syncfusion.com/documentation/textbox/data-binding/#two-way-data-binding