Я создаю приложение на стороне сервера Blazor, и у меня возникают проблемы с привязкой значения между двумя пользовательскими компонентами.
Я рассмотрел другой пример того, как должно работать bind или @bind, но яне могу понять, какая актуальная информация по этому вопросу.
Учитывая класс модели Пользователь:
public class User
{
[Mapping(ColumnName = "short_id")]
public string ShortId { get; set; }
public User()
{
}
}
Я хочу создать форму, которая отображает все свойства этого пользователя и имеет ихво входе, чтобы его можно было отредактировать и в конце сохранить в базу данных.
Моя форма (родительский компонент) выглядит следующим образом:
<div class="edit-user-form">
<AnimatedUserInput TbText="@User.ShortId" Placeholder="MHTEE Id"/>
<button class="btn btn-secondary" @onclick="Hide" style="{display:inline-block;}">Back</button>
<button class="btn btn-primary" @onclick="SaveUser" style="{display:inline-block;}">Save</button>
</div>
@code {
[Parameter] public vUser User { get; set; }
[Parameter] public Action Hide { get; set; }
bool _error = false;
void SaveUser()
{
ValidateUserData();
}
void ValidateUserData()
{
_error = string.IsNullOrWhiteSpace(User.ShortId);
}
}
Где AnimatedUserInput
- это пользовательский компонентэто выглядит так:
<div class="edit-area @FocusClass @WiggleClass">
<input type="text" @bind="@TbText" />
<span data-placeholder="@Placeholder"></span>
</div>
@code {
[Parameter]
public string TbText { get; set; }
[Parameter]
public string Placeholder { get; set; }
}
Теперь в текстовом поле ввода я правильно вижу ShortId
объекта User
в моем родительском компоненте.
Однако, если я изменю текст на входе и нажму кнопку Save
, которая вызывает метод ValidateUserData
и позволяет мне посмотреть на текущий объект User
, я вижу, что никаких изменений не было сделанов фактическом свойстве User.ShortId
, но только на входе.
Есть ли способ связать его так, чтобы изменения во входе автоматически применялись к свойству binded?
У меня есть несколькоиз этих свойств, которые должны быть показаны в форме, поэтому я не хочу подключать пользовательское OnChanged
событие для каждого из этих свойств.