Параметры строки запроса

Последнее обновление: 30.11.2023

Строка запроса представляет ту часть запрошенного адреса, которая идет после символа ? и представляет набор параметров, разделенных символом амперсанда &:

?параметр1=значение1&параметр2=значение2&параметр3=значение3

Каждому параметру с помощью знака равно передается некоторое значение.

И компоненты Blazor также могут получить значения данных параметров. Но получение параметров строки запроса будет немного отличаться от получения параметров маршрута.

Чтобы получить значение из параметра строки запроса в свойство компонета, к этому свойству должен применяться атрибут [SupplyParameterFromQuery] вместе с атрибутом [Parameter].

Стоит отметить, что получить параметры из строки запроса можно только в маршрутизируемых компонентах, то есть в которых применяется директива @page.

Blazor позволяет получать из строки запроса значения следующих типов:

  • bool, DateTime, decimal, double, float, Guid, int, long, string (а также их nullable-двойники)

  • массивы выше указанных значений

Например, пусть у нас будет следующий компонент User:

@page "/user"

<h2>Hello @Name</h2>
@if(Age!=null)
{
    <h3>Your age: @Age</h3>
}

@code {
    [Parameter]
    [SupplyParameterFromQuery]
    public string? Name { get; set; }
    [Parameter]
    [SupplyParameterFromQuery]
    public int? Age { get; set; }
}

Данный компонент является маршрутизируемым - он принимает директиву @page, который определяет сопоставляемый с компонентом шаблон маршрута - "/user".

В этом компоненте определены два свойства, которые будут сопоставляться с параметрами строки запроса - Name и Age.

Протестируем компонент, передавая ему какую-нибудь строку запроса:

Передача параметров строки запроса query string в компоненты Blazor в C#

Мы можем передать через строку все параметры, часть параметров или вобще не указывать строку запроса. Например, при запросе по адресу

https://localhost:7134/user?name=Tom&age=38

Свойство Name получит значение параметра "name", а свойство Age - значение параметра "age". Сопоставление между свойствами компонента и параметров строки запроса идет по имени. При этом регистр не имеет значения.

Также можно указать имя параметрам строки запроса, если оно отличается, с помощью свойства Name атрибута SupplyParameterFromQuery:

@page "/user"

<h2>Hello @Name</h2>

@code {
    [Parameter]
    [SupplyParameterFromQuery(Name="user-name")]
    public string? Name { get; set; }
}

В данном случае свойство Name будет сопоставляться с параметром "user-name":

Параметры строки запроса и атрибут SupplyParameterFromQuery в компонентах Blazor в C#
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850