Попробуйте это: добавить StateHasChanged ();метод, подобный следующему:
protected void OnEvent(int _x)
{
//lets say child sends x=7
this.x=_x;
// If this works, then it is a bug with Blazor...
// If not, be patient...
StateHasChanged();
Console.WriteLine($"From handler, x={this.x}");
}
Если страница обновляется, то вывод верен: всякий раз, когда вы перезагружаете страницу, вы как будто запускаете ее в первый раз.Теперь вы должны выяснить, почему страница обновляется.Покажите свой код ...
На ваш другой вопрос: повторное рендеринг в Blazor происходит с компонентами, состояние которых изменилось в результате событий (StateHasChanged () неявно вызывается Blazor) или когда вы явно вызываетеStateHasChanged () метод.Повторная визуализация выполняется только компонентами, на которые влияет изменение состояния, поэтому дочерний компонент может выполнить повторную визуализацию, а его родительская - нет.
Редактировать: Из того, что вы сказали ниже, теперь мы знаем, почему страница перезагружается, и, таким образом, каждый раз, когда вы нажимаете кнопку отправки, значение x равно 3. Конечно, когда вы нажимаете надругая кнопка, родительский компонент не перерисовывается, но, как я уже продемонстрировал выше, если вы добавите вызов StateHasChanged () в методе OnEvent, родительский компонент будет перерисован, а переменная xсодержать 7.
Примечание. Не следует использовать кнопку с атрибутом типа, установленным на «отправить».Blazor - это основа SPA.Вы не должны публиковать данные формы, отправляя форму (method = "post") или устанавливая атрибут типа кнопки "submit".Вы должны использовать вместо этого Ajax (HttpClient).Насколько я знаю, Blazor предотвращает отправку форм: возможно, только формы с method = "post" и кнопкой отправки.
Надеюсь, это поможет ... Пожалуйста, пометьте мой ответ как принятый, если он вам помог