Blazor WASM - 如何在布局内更改正文类动态

Posted

技术标签:

【中文标题】Blazor WASM - 如何在布局内更改正文类动态【英文标题】:Blazor WASM - how to change body class dynamic inside Layout 【发布时间】:2020-11-18 07:07:28 【问题描述】:

我有一个 Blazor 应用程序。 在我的 Index.html (wwwroot) 中,我有以下正文:

<body class="vertical-layout vertical-menu 2-columns fixed-navbar" data-open="click" data-menu="vertical-menu" data-col="2-columns">
    <app>Loading...</app>

    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">????</a>
    </div>
    <script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
    <script src="_framework/blazor.webassembly.js"></script>

    <script src="js/app.js"></script>
</body>

</html>

如果你注意到,我的Body 标签有一个类装饰。

我有 3 个布局,我必须将 Body 类更改为不同的值,但由于 Body 标记位于 index.html 内,我找不到这样做的方法。

有什么建议吗?

【问题讨论】:

【参考方案1】:

使用 JS 互操作。它可能看起来像这样:

window.bodyLayout = 
   toggleClass: className => 
       $('body').toggleClass(className);
   

@inject JSRuntime JSRuntime
...
@code 
    private Task ToggleBodyClass(string className)
    
        return JSRuntime.InvokeVoidAsync("bodyLayout.toggleClass", className);
    

【讨论】:

非常感谢,有道理。所以当之前的渲染发生时我应该改变身体中的类吗? 很高兴知道这一点。有意义,因为那是 DOM 存在的时候吧?

以上是关于Blazor WASM - 如何在布局内更改正文类动态的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Blazor WASM 身份网络核心 3.1 消息“您已注销”、“检查登录状态”和“授权”?

Blazor 客户端 (WASM) 应用程序洞察

Blazor wasm 获取更多信息并添加到用户声明中

调试 Blazor WASM(Aspnet 托管)时无法使用热重载

清理缓存后如何恢复 Blazor WASM“离线缓存”?

如何在 Blazor WASM 客户端中访问 Httpclient 标头