Usm*_*lil 7 asp.net metronic asp.net-core blazor blazor-server-side
我有 Blazor 服务器端应用程序,其中我为 Metronic Bootstrap 模板添加了 JavaScript 和 CSS 库。
当我运行应用程序时,模板已完全加载,但 JavaScript 没有响应。
例如,当我单击侧面菜单(箭头图标)或展开列表,或单击用户配置文件下拉菜单时,所有这些部分都不起作用。
但是,当我注释掉该行时,Blazor 服务器库 ( blazor.server.js) 模板开始工作,但其他 Blazor 组件无法正常工作(例如计数器)。
在_Host.cshtml文件Head部分添加了以下 CSS 引用:
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700" />
<link href="assets/plugins/custom/fullcalendar/fullcalendar.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
在Body部分中添加了以下 JavaScript 参考。
<script src="_framework/blazor.server.js"></script>
<script src="./assets/plugins/global/plugins.bundle.js"></script>
<script src="./assets/js/scripts.bundle.js"></script>
<script src="./assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<script src="./assets/js/custom/widgets.js"></script>
<script src="./assets/js/custom/apps/chat/chat.js"></script>
<script src="./assets/js/custom/modals/create-app.js"></script>
<script src="./assets/js/custom/modals/upgrade-plan.js"></script>
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下方法,但没有任何效果。看起来 Blazor 服务器应用程序在这些 JavaScript 文件加载到 DOM 之前正在渲染。我如何加载这些脚本并使其正常工作。任何帮助将非常感激。
<script src="_framework/blazor.server.js" autostart="false"></script>
<script>
Blazor.start().then(function () {
var customScript = document.createElement('script');
customScript.setAttribute('src', scriptURLs);
document.head.appendChild(customScript);
});
const scriptURLs = [
"./assets/plugins/global/plugins.bundle.js",
"./assets/js/scripts.bundle.js",
"./assets/plugins/custom/fullcalendar/fullcalendar.bundle.js",
"./assets/js/custom/widgets.js",
"./assets/js/custom/apps/chat/chat.js",
"./assets/js/custom/modals/create-app.js",
"./assets/js/custom/modals/upgrade-plan.js",
// ...
];
</script>
Run Code Online (Sandbox Code Playgroud)
在我的MainLayout.razor
@inherits LayoutComponentBase
@inject IJSRuntime JSRuntime
<div class="d-flex flex-column flex-root">
<div class="page d-flex flex-row flex-column-fluid">
<MainSidebar />
<div class="wrapper d-flex flex-column flex-row-fluid" id="kt_wrapper">
<MainHeader />
@Body
<MainFooter />
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
小智 1
只需添加以下内容:
<script>
function InitMetronicScript() {
$.getScript('theme/assets/plugins/global/plugins.bundle.js');
$.getScript('theme/assets/js/scripts.bundle.js');
$.getScript('theme/assets/js/custom/widgets.js');
</script>
Run Code Online (Sandbox Code Playgroud)
到您的 _Host.cshtml 文件
并调用它
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await JsRuntime.InvokeVoidAsync("InitMetronicScript");
}
Run Code Online (Sandbox Code Playgroud)
在你的 Layout.razor 中,它应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |