簡體   English   中英

If else function for active or deactive @layout blazor

[英]If else function for active or deactive @layout blazor

我想為活動或非活動@layout 制作其他 function。 但它不工作 @layout 始終處於活動狀態。

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

根據Blazor 的文檔,布局在編譯時被定義為一個屬性

使用 Razor 指令 @layout 將布局應用於組件。 編譯器將@layout 轉換為一個LayoutAttribute,該屬性應用於組件class。

由於布局被應用為 class 屬性,我懷疑你可以在運行時更改它。

我建議您在沒有布局的情況下定義一次組件,然后在另一個具有布局的組件中使用它 - 並在運行時決定要渲染哪個組件。

例如:

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

然后:

//MyComponentWithLayout.razor
@layout TransactionLayout

<MyComponent />

最后,在您的主要組件或頁面中,您可以執行以下操作:

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

這不是 Blazor 當前處理布局的方式......

請打開 App.razor 組件並找到 RouteView 元素。 這個 class 有一個名為 DefaultLayout 的屬性,其中設置了應用程序的默認布局 (MainLayout)。

現在,您應該從RouteView class 派生,添加兩個屬性來表示活動或非活動布局。 做這樣的事情:

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
}

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM