0

概述:

您好,我创建了一个 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; }
        }
    }
}
4

0 回答 0