javascript - 在可重用的 Razor 类库中包含静态文件

标签 javascript asp.net-core asp.net-core-2.1 razor-class-library

我正在尝试创建一个可重用的类库 (RCL),我可以在多个 ASP.NET Core MVC 项目中使用它。到目前为止一切顺利……直到我尝试在 RCL 中包含所需的 JavaScript。几乎没有关于此主题的文档。我最好的机会是 try this example .

但是当我这样做时,在构建库时出现以下错误:

enter image description here

这是项目文件和库的结构:

enter image description here

感谢任何帮助。

最佳答案

既然我有空闲时间,我将回答我自己的问题。也许它对某人有用。

最后,我使用 EmmbededResources 解决了这个问题,而没有 EmbeddedFilesManifest 作为 ianbusko pointed out in Github .

首先,我为 IApplicationBuilder 类创建了一个扩展:

namespace Dashboard.Lib.Extensions
{
    public static class IApplicationBuilderExtension
    {
        public static void UseDashboardScripts(this IApplicationBuilder builder)
        {
            var embeddedProvider = new EmbeddedFileProvider(typeof(Areas.Dashboard.ViewComponents.DashboardViewComponent)
                .GetTypeInfo().Assembly, "Dashboard.Lib.Scripts");

            builder.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = embeddedProvider,
                RequestPath = new PathString("/Scripts")
            });
        }
    }
}

然后我将 javascript 文件添加到项目文件中:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <GenerateEmbeddedFilesManifest>false</GenerateEmbeddedFilesManifest>
 </PropertyGroup>

 <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="2.1.1" />
 </ItemGroup>

 <ItemGroup>
    <EmbeddedResource Include="Scripts/**/**/**/*" Pack="true" />
 </ItemGroup>

在 RCL View 中,javascript 包含如下:

@section Scripts{
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script type="text/javascript" src="~/Scripts/pagination.js"></script>
    <script type="text/javascript" src="~/Scripts/checkdigit-validator.js"></script>
    <script type="text/javascript" src="~/Scripts/rut-validation.js"></script>
}

最后,在主 MVC 项目的 Statup.cs 中,您只需包含以下内容:

app.UseStaticFiles();
app.UseDashboardScripts();

关于javascript - 在可重用的 Razor 类库中包含静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52995488/

相关文章:

javascript - 在 Liferay portlet 中放置一个 iframe

javascript - jQuery AJAX Post alert() 未被调用

javascript - 逐步在 localStorage 中存储和加载输入数据

asp.net - ASP .Net Core 在 JWTBearerOptions.Events OnTokenValidated 事件中访问 DistributedRedisCache

asp.net-core - 用于 onclick 的 Blazor 条件 if 语句

javascript - 如何显示喜欢/不喜欢 MySQL、NodeJS

asp.net-core - 在运行时读取 project.json 版本号

.net-core - 是否应该处置 HttpClientFactory 创建的 HttpClient 实例?

signalr - 如何将 SignalR Hub 类(不是 hubcontext)注入(inject) Controller

c# - UPDATE 语句与 EF Core 中的 FOREIGN KEY 约束冲突