Как принимать только POST-запросы для страницы в Blazor .NET 8?

Мы создаем серверное приложение Blazor (на основе .NET 8) с двумя страницами: домашней страницей и страницей результатов. На домашней странице есть поле для ввода «Дата рождения» и кнопка для перехода на страницу результатов.

Мы хотим перейти на страницу результатов ТОЛЬКО с главной страницы с заполненной датой рождения. Страница результатов не должна быть доступна путем ввода URL-адреса в браузере или с помощью кнопки «Назад». Если пользователь вводит URL-адрес страницы результатов непосредственно в браузере, его необходимо перенаправить на домашнюю страницу.

Есть ли у кого-нибудь идеи о том, как заставить такое поведение? Есть ли способ проверить, является ли запрос POST, а если нет, перенаправить обратно на другую страницу? Или запретить пользователям доступ к этой странице, если она исходит не с домашней страницы?

Заранее большое спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
261
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужны два маршрута. Все в пользовательском интерфейсе является компонентом, поэтому используйте одну страницу (маршрутизируемый компонент), которая показывает компонент результатов, когда состояние действительно.

Маршрута до Results нет, поэтому нет навигации.

Вот быстрая демонстрация:

// Results.razor
<h3>Results</h3>
 
Here be the results!

@code {
}

И домой:

@page "/"

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

@if (_valid)
{
    <div class = "mb-2">
        <button class = "btn btn-primary" @onclick = "this.OnClick">Go Back</button>
    </div>
    <Results />
}
else
{
    <div class = "mb-2">
        <button class = "btn btn-primary" @onclick = "this.OnClick">Valid Data Submit</button>
    </div>
}

@code {
    private bool _valid;

    private Task OnClick()
    {
        _valid = !_valid;
        return Task.CompletedTask;
    }

}

Интересный подход, спасибо!

FerdieQO 22.02.2024 15:44

В обычном приложении Blazor нет сообщений, только начальная страница. Это СПА. Если вы каждый раз отправляете сообщение на сервер, это не совсем приложение Blazor.

MrC aka Shaun Curtis 22.02.2024 15:59

Да, это имеет смысл. Я реализовал решение, и оно работает. Спасибо!

FerdieQO 23.02.2024 12:47

Другие вопросы по теме