Параметр объекта маршрутизации Blazor - PullRequest
1 голос
/ 18 октября 2019

Можем ли мы использовать параметры объекта с таким блеском?

@page "/account/login/"
@page "/account/login/{Customer}"
@using Model

@(Customer?.Name ?? "Empty")

@code {
   [Parameter]
   public Customer Customer { get; set; }
}

1 Ответ

1 голос
/ 01 ноября 2019

Нет, только простые типы (int, string и т. Д.). Я бы посоветовал не использовать этот тип привязки для строк. Причина в том, что URL имеет зарезервированные символы, которые преобразуются, если они не находятся в строке запроса, добавленной в конец URL. Кроме того, если ваши строки содержат косые черты, Blazor будет обрезать строку. Например,

переход к "/ account / login / test / 123" приведет к id = test.

@page "/account/login/"
@page "/account/login/{id}"
@using Model

@(Customer?.Name ?? "Empty")

@code {
   [Parameter]
   public string id{ get; set; }
}

Есть несколько способов преодолеть это.

  1. Отправьте идентификатор (см. Пример кода выше) и выполните запрос сервера для получения ваших данных.
  2. Создайте службу менеджера состояний в приложении, которую можно использовать для передачи объектовмежду страницами / компонентами.

У меня была ситуация, когда мне нужно было отправить сложную строку токена Identity в компонент Blazor через URL, я использовал строку запроса и вручную проанализировал строку с помощью NavigationManager.Uri,Этот пост достаточно длинный, если вы хотите увидеть пример моего разбора строки запроса, дайте мне знать.

Надеюсь, это поможет!

...