Почему срабатывает OnInitialized при использовании NavigationManager для перехода на ту же страницуC#

Место общения программистов C#
Ответить
Anonymous
 Почему срабатывает OnInitialized при использовании NavigationManager для перехода на ту же страницу

Сообщение Anonymous »

Это серверное приложение Blazor с интерактивностью на каждой странице.
На моей странице поиска я хочу обновить URL-адрес страницы при изменении параметра, чтобы ссылку можно было скопировать. Насколько я понимаю, использование NavigationManager Blazor обнаружит, что полная перезагрузка не требуется, и пропустит инициализацию компонента.
Причина, по которой я этого хочу, заключается в том, что настройки фильтра и т. д. не сбрасываются каждый раз. время. Другие варианты, которые у меня есть, — это сохранить настройки фильтра в состоянии или обновить URL-адрес с помощью JS Interop, вызвав History.pushState.
Я ожидаю, что следующий код не попадет в OnInitialized () после нажатия кнопки «Начать поиск».
@page "/test/{searchvalue}"
@rendermode InteractiveServer
@inject NavigationManager _NavigationManager


Search())">Start search

Test input: @SearchValue

@code{

[Parameter]
public string SearchValue { get; set; } = "";

public string SearchInput { get; set; } = "";

protected override void OnInitialized()
{
// Inital filter settings etc.
// ...

base.OnInitialized();
}

protected override void OnParametersSet()
{
if (SearchInput != SearchValue)
{
SearchInput = SearchValue;

// Do the actual searching ...
}
}

protected void Search()
{
_NavigationManager.NavigateTo($"/test/{SearchInput}", false, false);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... e-to-the-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»