当前位置:   article > 正文

Blazor 根据路由判断哪些页面需要加模板,哪些不需要_blazor 不用layout 怎么定义

blazor 不用layout 怎么定义

比如我们的登录的页面是不需要加通用模板的,通过@if 控制 RouteView的DefaultLayout即可

  1. <BootstrapBlazorRoot>
  2. <Router AppAssembly="@typeof(App).Assembly">
  3. <Found Context="routeData">
  4. <PageTitle>Title</PageTitle>
  5. @if (routeData.PageType == typeof(BlazorApp.Pages.Login))
  6. {
  7. <RouteView RouteData="@routeData" />
  8. }
  9. else
  10. {
  11. <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
  12. }
  13. <FocusOnNavigate RouteData="@routeData" Selector="h1" />
  14. </Found>
  15. <NotFound>
  16. <PageTitle>Not found</PageTitle>
  17. <LayoutView Layout="@typeof(MainLayout)">
  18. <p> 正在玩命开发中 ...</p>
  19. </LayoutView>
  20. </NotFound>
  21. </Router>
  22. </BootstrapBlazorRoot>

上面的方式适合静态配置,一般页面菜单都是动态,可以用下面的方式实现

  1. @inject DataService dataService
  2. @implements IDisposable
  3. @if (showTemplate)
  4. {
  5. <RouteView RouteData="routeData" DefaultLayout="typeof(MainLayout)" />
  6. }
  7. else
  8. {
  9. <RouteView RouteData="routeData" DefaultLayout="" />
  10. }
  11. @code {
  12. private bool showTemplate;
  13. private RouteData routeData;
  14. protected override async Task OnInitializedAsync()
  15. {
  16. // 从后台获取数据
  17. var data = await dataService.GetData();
  18. // 根据获取到的数据判断是否需要使用模板
  19. if (data.NeedsTemplate)
  20. {
  21. showTemplate = true;
  22. }
  23. else
  24. {
  25. showTemplate = false;
  26. }
  27. // 设置路由数据
  28. routeData = GetRouteData();
  29. await base.OnInitializedAsync();
  30. }
  31. private RouteData GetRouteData()
  32. {
  33. // 获取路由数据的方法(根据你的实际情况编写)
  34. // 返回你想要的路由数据对象
  35. }
  36. public void Dispose()
  37. {
  38. // 在需要释放资源时进行清理工作(根据你的需求进行实现)
  39. }
  40. }
 

在上述示例中,我们通过 ​@inject​指令注入了一个名为 ​DataService​的服务,用于获取后台数据。在 ​OnInitializedAsync生命周期方法中,我们通过调用 ​dataService.GetData()​方法获取数据,并根据数据的特定属性进行条件判断。根据判断结果,我们设置 ​showTemplate​变量来决定是否使用模板。

然后,我们使用 ​@if​语句根据 ​showTemplate​的值来选择性地设置 ​DefaultLayout​属性。如果 ​showTemplate​为 ​true​,则应用默认的模板布局;如果为 ​false​,则不应用任何模板。

最后,我们还定义了 ​GetRouteData()​方法来获取自定义的路由数据,并将该数据赋值给 ​routeData​变量。

请注意,在使用 ​implements IDisposable​的情况下,我们可以在 ​Dispose()​方法中进行资源清理工作,如释放订阅、取消网络请求等。根据你的具体需求,你可以根据情况进行实现。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/780461
推荐阅读
相关标签
  

闽ICP备14008679号