Если еще функция для активного или деактивного @layout Blazor - PullRequest
0 голосов
/ 30 октября 2019

я хочу сделать если еще функция, для активного или деактивного @layout. но не работает @layout всегда активен.

@if (showTable == true)
{
    @layout TransactionLayout
}

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Это не тот способ, которым Blazor обрабатывает макеты в настоящее время ...

Пожалуйста, откройте компонент App.razor и найдите элемент RouteView. Этот класс имеет свойство атрибута с именем DefaultLayout, в котором задан макет вашего приложения по умолчанию (MainLayout).

Теперь вы должны наследовать класс RouteView , добавить два свойства для представления активногоили неактивные макеты. Сделайте что-то вроде этого:

MyRouteView.cs

public class MyRouteView : RouteView
{
   // Define necessary properties
        [Parameter]
        public Type ActivatedLayout { get; set; }

        [Parameter]
        public Type DeactivatedLayout { get; set; }

      // Add more code to do the work of activating and deactivating the layout
}

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

0 голосов
/ 30 октября 2019

Согласно Документам Blazor , макет определяется как атрибут в время компиляции :

Используйте директиву Razor@layout, чтобы применить макет к компоненту. Компилятор преобразует @layout в LayoutAttribute, который применяется к классу компонента.

Поскольку макет применяется как атрибут класса, я сомневаюсь, что вы можете изменить его во время выполнения.

Я бы предложил вам один раз определить компонент без макета, а затем использовать его в другом компоненте с макетом - и решить во время выполнения, какой компонент визуализировать.

Дляпример:

//MyComponent.razor
<!-- your component here, without the layout -->

затем:

//MyComponentWithLayout.razor
@layout TransactionLayout

<MyComponent />

и, наконец, в вашем основном компоненте или странице вы можете сделать:

@if(showTable)
{
    <MyComponentWithLayout />
}
else
{
    <MyComponent />
}
...