.razor文件中的Blazor基本标签和@page指令 演示

我开始使用Blazor服务器端,但路由不正确。我不了解base中是否需要_host.cshtml标签。例如,如果仍然需要在每个Blazor组件中添加base网址,例如:我想为示例/app/使用基地址为@pageCounter指令值为"/counter"的值不会“编译”为"/app/counter"。我必须将@page设置为"/app/counter",但这很有意义,但这意味着base中的_host.cshtml标签是没有用的...

我在这里怎么了?

ZCR0001 回答:.razor文件中的Blazor基本标签和@page指令 演示

<base href='' >client side technology,它指定当前文档中所有相对URL的基本URL。许多SPA框架,例如Angular,将使用此元素。

  

我必须将@page设置为“ / app / counter”

实际上,您不必,并且绝对不应该这样做。使用<base>时,最重要的优点之一是允许我们创建应用程序而无需让组件知道基本URL

假设您已将基本href从'/'更改为'/ app /',并且还更改了其他相对网址:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <title>BlazorApp</title>
    <base href="/app/" />
    <link rel="stylesheet" href="/css/bootstrap/bootstrap.min.css" />
    <link href="/css/site.css" rel="stylesheet" />
</head>
<body>
    <app>
        @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
    </app>

    <script src="/_framework/blazor.server.js"></script>
</body>
</html>

别忘了在默认Blazor中心URL前面加上/app/

app.UseEndpoints(endpoints =>
{
    endpoints.MapBlazorHub("/app/_blazor");
    endpoints.MapFallbackToPage("/_Host");
});

仅此而已。根本不需要将路由从@page "/counter"更改为@page "/app/counter"

演示

这是一个演示,我们不更改组件的@page路线:

enter image description here

,

对于 Blazor WebAssembly ,您只需要处理index.html

当您将网站发布到生产环境中的某个子文件夹时(例如:yoursite.com/couch/web),请将该<base href="/">的代码代替放在head标签内,并替换{{ 1}}和您自己的子:

"/couch/web/"

结果是<script type="text/javascript"> var appBase = document.createElement('base'); appBase.href = "/couch/web/"; if (window.location.href.indexOf("localhost") > -1) { appBase.href = "/"; } document.head.appendChild(appBase); </script> 在生产环境中自动生成,<base href="/couch/web/">在从本地主机开发时自动生成。

后来,人们可以访问通过只读<base href="/">设置的基本href。

,

我遇到了同样的问题,因为我需要在一台 Nginx 服务器下托管多个应用程序。

非常重要:您必须在 Startup.cs 中的 ApplicationBuilder 的任何其他配置之前设置 PathBase。要动态设置路径,它是从 appsettings 中读取的

public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
    app.UsePathBase(Configuration.GetValue<string>("PATH_BASE") ?? "/");
    ...
}

appsettings.json

{
    ...
    "PATH_BASE": "/mycustompath",...
}

_Host.cshtml

<head>
    <base href="~/" />
    ...
</head>

导航和资源的所有链接必须是相对的,例如

<script src="_framework/blazor.server.js"></script>
or
<script src="_framework/blazor.server.js"></script>
,

要使其完全正常工作,我必须结合Softlion修复程序

在startup.cs文件中,这也是必需的。它也必须是configure方法的第一行,否则会发生坏事

        app.UsePathBase("/app");

这样,您的相对链接也将起作用。例如,我有一个登录页面的链接。

        <a href="~/Login">Login</a>

-------------编辑其他信息-------

我刚刚发现西装外套对外套真的很挑剔。在IIS和Visual Studio中都会发生这种情况

        <base href="/app/" />
        app.UsePathBase("/app");

不同
        <base href="/App/" />
        app.UsePathBase("/App");

您必须将它们匹配起来。不仅您还必须使用相同的大小写导航到Web应用程序。

由于网址不相同,并且在javascript调试器中引发了问题,我提出了github问题

localhost:5001 / App

https://github.com/dotnet/aspnetcore/issues/23107

,

<base href='/app/' > + dotnet run --pathbase=/app (来自there

本文链接:https://www.f2er.com/3113793.html

大家都在问