ASP.Net Core Blazor:如何根据 header 值加载不同的 _Host.cshtml 文件
ASP.Net Core Blazor: How to load different _Host.cshtml files based on header value
我想根据请求中的 header 在 ASP.NET Core Blazor 项目(服务器端 Blazor)中加载 _Host.cshtml
文件。
例如:
客户端连接到 example.com
并被重定向到特定于租户 A 的 _Host.cshtml
文件。
另一个客户端连接到 test.com
并被重定向到特定于租户 B 的 _Host.cshtml
文件。
_Host.cshtml
文件看起来像这样:
@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title>ProjectName</title>
<link rel="icon" type="image/png" sizes="32x32" href="images/tenantA/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="images/tenantA/favicons/favicon-16x16.png">
</head>
<body class="something">
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.Server))
</app>
<script src="_framework/blazor.server.js"></script>
<link href="css/tenantA/site.css" rel="stylesheet" />
</body>
</html>
在_Host.cshtml
文件中,需要根据上述从租户URL中选择的租户来设置对tenantA
的引用,如上所述。这可能吗?如果可以,如何实现?
这是一种可能的解决方案,
在_Host.cshtml
您可以通过动态字符串逻辑重定向到任何 _HostX.cshtml
@page "/"
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@if(Request.Query["test"].FirstOrDefault()=="1")
{
Html.RenderPartial("_Host2.cshtml",null,ViewData);
return;
}
<!DOCTYPE html>
<html lang="en">
<head>
....
...
..
.
已测试。
您可以修改条件语句以匹配您的情况。
我想根据请求中的 header 在 ASP.NET Core Blazor 项目(服务器端 Blazor)中加载 _Host.cshtml
文件。
例如:
客户端连接到 example.com
并被重定向到特定于租户 A 的 _Host.cshtml
文件。
另一个客户端连接到 test.com
并被重定向到特定于租户 B 的 _Host.cshtml
文件。
_Host.cshtml
文件看起来像这样:
@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title>ProjectName</title>
<link rel="icon" type="image/png" sizes="32x32" href="images/tenantA/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="images/tenantA/favicons/favicon-16x16.png">
</head>
<body class="something">
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.Server))
</app>
<script src="_framework/blazor.server.js"></script>
<link href="css/tenantA/site.css" rel="stylesheet" />
</body>
</html>
在_Host.cshtml
文件中,需要根据上述从租户URL中选择的租户来设置对tenantA
的引用,如上所述。这可能吗?如果可以,如何实现?
这是一种可能的解决方案,
在_Host.cshtml
您可以通过动态字符串逻辑重定向到任何 _HostX.cshtml
@page "/"
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@if(Request.Query["test"].FirstOrDefault()=="1")
{
Html.RenderPartial("_Host2.cshtml",null,ViewData);
return;
}
<!DOCTYPE html>
<html lang="en">
<head>
....
...
..
.
已测试。
您可以修改条件语句以匹配您的情况。