Согласно Документам Blazor , макет определяется как атрибут в время компиляции :
Используйте директиву Razor@layout, чтобы применить макет к компоненту. Компилятор преобразует @layout в LayoutAttribute, который применяется к классу компонента.
Поскольку макет применяется как атрибут класса, я сомневаюсь, что вы можете изменить его во время выполнения.
Я бы предложил вам один раз определить компонент без макета, а затем использовать его в другом компоненте с макетом - и решить во время выполнения, какой компонент визуализировать.
Дляпример:
//MyComponent.razor
<!-- your component here, without the layout -->
затем:
//MyComponentWithLayout.razor
@layout TransactionLayout
<MyComponent />
и, наконец, в вашем основном компоненте или странице вы можете сделать:
@if(showTable)
{
<MyComponentWithLayout />
}
else
{
<MyComponent />
}