【发布时间】:2022-01-04 05:49:27
【问题描述】:
有没有更优雅的方法可以在一个项目中将 2 个 bootsraps/css 混合在一起?
我有一个 Blazor 应用程序(服务器预渲染),它有 2 个区域:
- 客户的最终用户(订购服务)
- 管理员(管理库存、价格...) - 仅适用于管理员用户
例如,我使用 bootstrap 5 开发了 Admin 部分(实际上我使用了带有自己的 bootstrap 的 MudBlazor)。
我需要网站的“最终用户”部分,其中将使用完全不同的引导程序 (https://themes.getbootstrap.com/product/space-multipurpose-responsive-template/)。
我可以将 2 个网站拆分为 2 个不同的“网络项目”,但客户更喜欢使用单个应用程序,我还没有找到文档示例如何实现这一点,所以我将 _Host.cshtml 更改为“catch”管理页面(并将它们指向页面Admin.cshtml)
@page "/"
@namespace MultiAreaDemo.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = null;
}
@if (Request.Query["admin"].FirstOrDefault() == "1")
{
Html.RenderPartial("Admin.cshtml", null, ViewData);
return;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MultiAreaDemo - End user</title>
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/space-enduser/bootstrap.min.css" />
<link href="MultiAreaDemo.styles.css" rel="stylesheet" />
</head>
.....
并创建了 Admin.cshtml 页面(指向“admin”引导 css):
@page "/admin"
@namespace MultiAreaDemo.Pages.Admin
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MultiAreaDemo - ADMIN </title>
<base href="~/" />
<link rel="stylesheet" href="css/admin/bootstrap.min.css" />
</head>
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">????</a>
</div>
<script src="_framework/blazor.server.js"></script>
</body>
</html>
所有“admin”页面都需要以“admin”为前缀。例如:
@page "/admin"
<h3>AdminHome</h3>
....
因此页面 https://localhost:44398/admin 正在使用 css/admin/bootstrap.min.css 而 https://localhost:44398/ 正在使用 css/bootstrap/space-enduser/bootstrap.min.css
希望对您有所帮助。如果有人知道更优雅的方式,我将不胜感激。
【问题讨论】:
-
这可以通过对用户和管理页面使用不同的布局非常简单地完成。如所选答案所示,您真的不需要动态 css 加载器的所有额外复杂性。有关详细信息,请参阅blazor-university.com/layouts/using-layouts
-
@Roberto,您是说问题中描述的 _Host.cshtml 和 Admin.cshtml 'customisation' 吗?
标签: css blazor multi-tenant blazor-server-side