为什么不是';当使用Blazor时,我的JavaScript渲染是否正确?

为什么不是';当使用Blazor时,我的JavaScript渲染是否正确?,javascript,c#,html,blazor,blazor-server-side,Javascript,C#,Html,Blazor,Blazor Server Side,所以我通常使用这个主题,它是一个包含所有文件的文件夹,比如资产、html页面等 如果我从那里启动索引页面,点击一个菜单项,温可以清楚地看到动画效果非常好。 然而,只要我添加了该页面使用的相同CSS和JS,它就开始工作了 你看不到它,但我正在单击每个项目,它不会设置菜单的动画。 它还缺少一些图标,如果你比较两者,你可以看到这些图标 下面是有趣的。。 如果我将渲染模式更改为static,而不是ServerPrerendered,则效果非常好 <app> <compone

所以我通常使用这个主题,它是一个包含所有文件的文件夹,比如资产、html页面等

如果我从那里启动索引页面,点击一个菜单项,温可以清楚地看到动画效果非常好。

然而,只要我添加了该页面使用的相同CSS和JS,它就开始工作了

你看不到它,但我正在单击每个项目,它不会设置菜单的动画。 它还缺少一些图标,如果你比较两者,你可以看到这些图标

下面是有趣的。。 如果我将渲染模式更改为
static
,而不是
ServerPrerendered
,则效果非常好

<app>
    <component type="typeof(App)" render-mode="ServerPrerendered" />
</app>
我添加HTML的方法是这样做。。我进入_Host.cshtml文件,在顶部的标记中,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
...
    <link rel="stylesheet" href="assets/css/bootstrap/bootstrap.min.css" />
    <link href="assets/css/site.css" rel="stylesheet" />


    <!-- Articles CSS -->
    <link type="text/css" rel="stylesheet" href="assets/plugins/dataTable/datatables.min.css">
    <link type="text/css" rel="stylesheet" href="assets/plugins/summernote/summernote.min.css">
    <link type="text/css" rel="stylesheet" href="assets/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css">
    <!-- Main CSS -->
    <link type="text/css" rel="stylesheet" href="assets/css/style.css" />

...
JS文件也是如此,但我在标记之前就这样做了

<script src="_framework/blazor.server.js"></script>
<!-- Footer Script -->
<!--================================-->
<script src="assets/plugins/jquery/jquery.min.js"></script>
<script src="assets/plugins/jquery-ui/jquery-ui.js"></script>
<script src="assets/plugins/popper/popper.js"></script>

很明显,它可以找到一些,因为它保持了相同的一般风格,当我使用我前面提到的“静态”渲染它时,它工作得很好。几乎就好像它渲染的东西太快了


我在这方面哪里出了问题?

我认为现在使用Net5更容易实现这一点。您可以将此JavaScript模块作为静态web资产(wwwroot/exampleJsInterop.js)添加到.NET库中,然后使用IJSRuntime服务将该模块导入到.NET代码中:

await jsRuntime.InvokeAsync<JSObjectReference>("import", "./_content/MyComponents/exampleJsInterop.js");
await jsRuntime.InvokeAsync(“import”,“/_content/MyComponents/exampleJsInterop.js”);
“导入”标识符是专门用于导入JavaScript模块的特殊标识符。您可以使用其稳定的静态web资产路径指定模块:_content/[LIBRARY NAME]/[WWWROOT下的路径]


了解更多信息

我认为现在使用Net5更容易实现这一点。您可以将此JavaScript模块作为静态web资产(wwwroot/exampleJsInterop.js)添加到.NET库中,然后使用IJSRuntime服务将该模块导入到.NET代码中:

await jsRuntime.InvokeAsync<JSObjectReference>("import", "./_content/MyComponents/exampleJsInterop.js");
await jsRuntime.InvokeAsync(“import”,“/_content/MyComponents/exampleJsInterop.js”);
“导入”标识符是专门用于导入JavaScript模块的特殊标识符。您可以使用其稳定的静态web资产路径指定模块:_content/[LIBRARY NAME]/[WWWROOT下的路径]


了解更多信息

我忘了提到,控制台或网络选项卡中没有错误。假设您的JS在document ready(文档就绪)或类似情况下执行了操作,这是在Blazor完成连接和渲染之前。你可能需要弄清楚JS在启动时做了什么,然后从OnAfterRenderAsync(可能是在App.razor中)调用它。有趣的是,我刚刚发布了一个关于这方面的新问题,我已经设法弄明白了一些事情,如果你想在这里查看的话,你的问题让我很困惑。第一个示例正常工作,第二个则不正常,但是您在代码中做了哪些更改使其停止工作?“只要我添加了该页面使用的相同CSS和JS”是什么意思?@Vencovsky我在这里提出了一个明确的问题,我忘了提到,控制台或网络选项卡中没有错误。假设您的JS在文档就绪或类似情况下做了一些事情,这是在Blazor完成连接和渲染之前。你可能需要弄清楚JS在启动时做了什么,然后从OnAfterRenderAsync(可能是在App.razor中)调用它。有趣的是,我刚刚发布了一个关于这方面的新问题,我已经设法弄明白了一些事情,如果你想在这里查看的话,你的问题让我很困惑。第一个示例正常工作,第二个则不正常,但是您在代码中做了哪些更改使其停止工作?“只要我添加了该页面使用的相同CSS和JS”是什么意思?@Vencovsky我在这里提出了一个明确的问题