概述:
您好,我创建了一个 Razor 类库,它作为 NuGet 包使用。我在_Layout.cshtml
客户端应用程序中引用了部分视图,并且我在可靠地加载图像时遇到了问题。所有相关代码如下所示。库和客户端都是使用 .NET Core 3.1 编写的。
问题陈述:
启动应用程序时,myCompanyLogo.png
会为登录页面加载图像。但是,离开登录页面后,不会显示徽标。当我导航回登录页面时,徽标再次成功显示。
代码:
在库中,包含的图像文件myCompanyLogo.png
标记为“内容”和“如果较新则复制”。我有一个名为_Header.cshtml
. 该组件定义如下:
@model HeaderViewModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<link rel="stylesheet" href="_content/Library.UserInterface/css/library.css" />
<header class="companyRed">
<a class="navbar-brand m-2" href="https://example.com">
<img src="_content/Library.UserInterface/images/myCompanyLogo.png"
style="height:5em;width:auto">
</a>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm text-light bg-light border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand text-dark"
asp-controller="@Model.ApplicationHomePage.ControllerName"
asp-action="@Model.ApplicationHomePage.ActionName">@Model.ApplicationName</a>
<button class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target=".navbar-collapse"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
@foreach (var key in Model.MenuItems.Keys)
{
<li class="nav-item">
<a class="nav-link text-dark"
asp-controller="@Model.MenuItems[key].ControllerName"
asp-action="@Model.MenuItems[key].ActionName">@key</a>
</li>
}
</ul>
</div>
</div>
</nav>
</header>
这是在_Layout.cshtml
文件中的客户端应用程序中使用的,如下所示:
<body>
<partial name="_Header"
model='new HeaderViewModel
{
ApplicationName = "Event Management",
ApplicationHomePage = new HeaderViewModel.ControllerActionPair
{
ControllerName = "Event",
ActionName = "Index"
},
MenuItems = new Dictionary<string, HeaderViewModel.ControllerActionPair>
{
{
"Events", new HeaderViewModel.ControllerActionPair
{
ControllerName = "Event",
ActionName = "Index"
}
}
}
}' />
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<!-- Footer, Scripts, etc. omitted -->
</body>
为了完整起见,HeaderViewModel.cs
定义如下:
using System.Collections.Generic;
namespace Library.UserInterface.ViewModels
{
public class HeaderViewModel
{
public string ApplicationName { get; set; }
public ControllerActionPair ApplicationHomePage { get; set; }
public IDictionary<string, ControllerActionPair> MenuItems { get; set; }
public class ControllerActionPair
{
public string ControllerName { get; set; }
public string ActionName { get; set; }
}
}
}