Я на самом деле экспериментирую с Blazor WebAssembly.
Все работает нормально, кроме одного.
Идея в том, что я хочу использовать один и тот же компонент для создания или редактирования элемента.
Имя компонента - CreateOrEdit.razor, и у меня есть два маршрута:
@page "/master/maker/create"
@page "/master/maker/{id:int}"
Идентификатор захватывается и сохраняется в свойстве:
[Parameter]
public int Id { get; set; }
У меня также есть getter, чтобы определить, находимся ли мы на странице редактирования или создания.
public bool IsEditPage { get => Id > 0; }
И используется в таком представлении
@if (IsEditPage)
{
<Button Clicked="OnEditButtonClicked"
Color="@(m_EditMode ? Color.Danger : Color.Primary)" Class="mb-2">
@(m_EditMode ? "Save" : "Edit")
</Button>
<Row>
<Column ColumnSize=" ColumnSize.Is2" Class="my-auto">
<span>ID</span>
</Column>
<Column ColumnSize="ColumnSize.Is8">
<span>@Id</span>
</Column>
<Column ColumnSize="ColumnSize.Is2"></Column>
</Row>
}
else
{
<Button Clicked="OnCreateButtonClicked" Color="Color.Danger" Class="mb-2">Create</Button>
}
Если мы находимся в режиме редактирования, мы получили идентификатор отобразится элемент и кнопка «Изменить». Затем, если мы нажмем кнопку «Редактировать», элементы формы можно будет редактировать. Кнопка «Редактировать» изменится на «Сохранить». Затем данные отправляются в API.
В режиме создания отображается кнопка «Сохранить». Просто щелкнув по нему, отправьте данные в API. Я планирую добавить проверку, но проблема не здесь.
Проблема ниже:
Предположим, мы сначала переходим на страницу редактирования «localhost / master / maker / 1. "а затем мы переходим на страницу создания" localhost / master / maker / create "(проблема такая же, если мы создаем элемент и затем перенаправляем на страницу редактирования); Компонент не выполняет повторную визуализацию, потому что он использует тот же компонент. Более того, метод OnInitializedAsyn c () больше не вызывается. Я не хочу, чтобы два компонента были разделены одним и тем же кодом, и я не хочу снова выполнять принудительную загрузку, потому что на Io C есть несколько ограниченных служб для кэширования данных.
Может ли кто-нибудь мне помочь?