asp.net-mvc - 将 javascript 文件存储在与 ASP.NET Core 1.1 中的 View 相同的文件夹中?

标签 asp.net-mvc asp.net-core

在 ASP.NET Web 应用程序...MVC(非核心)中,我可以在 web.config 文件中添加此...

<system.webServer>
    <handlers>
      <add name="JavaScriptHandler"
         path="*.js"
         verb="*"
         preCondition="integratedMode"
         type="System.Web.StaticFileHandler" />
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler"
           path="*"
           verb="*"
           preCondition="integratedMode"
           type="System.Web.HttpNotFoundHandler" />
    </handlers>
</system.webServer>

然后我可以将 javascript 文件放在与 View 文件相同的文件夹中。

我能以某种方式在 ASP.Net Core 1.1 中做同样的事情吗?

谢谢

最佳答案

这里是微软官方文档:Working with Static Files in ASP.NET Core

作为 OWIN 管道的一部分,默认情况下不会呈现静态文件,包括“wwwroot”文件夹中的静态文件。过去在 web.config 中处理的地方,现在一切都通过 OWIN 管道。您必须添加 StaticFile 中间件,这将允许它们被渲染。默认实现允许呈现“wwwroot”下的所有文件。

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();
}

上面的链接中提供了文档,用于添加其他位置以允许从中呈现文件。这不是明确的,但您可以查看 StaticFile Middleware 的实现在 Github 上获取自定义实现的想法。

以下代码将添加 StaticFiles 中间件以仅允许从“Views”文件夹中呈现 javascript 文件。您可以通过向词典添加项目来添加其他文件。

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();

    // Render only .js files in "Views" folder
    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new PhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory(), @"Views")),
            RequestPath = new PathString("/Views"),
            ContentTypeProvider = new FileExtensionContentTypeProvider(
                new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
                {
                    { ".js", "application/javascript" },
                })
        }
    );
}

您唯一的选择是添加自定义 grunt(或 gulp)任务,将“Views”文件夹中的 javascript 文件复制到“wwwroot”文件夹中创建的新文件夹中。您可以在此处查看一些编译 TypeScript 代码和执行类似操作的示例。 Using Grunt Tasks

关于asp.net-mvc - 将 javascript 文件存储在与 ASP.NET Core 1.1 中的 View 相同的文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045714/

相关文章:

c# - 在 .NET 4.8 上的 ASP.NET MVC Web 应用程序中安装 Bootstrap 5

javascript - 获取事件时 FullCalendar 开始和结束日期解析为 null

asp.net-mvc - 使用 ASP.NET Core 2.0 MVC 在一个解决方案的不同项目中共享相同的 _layout.cshtml

asp.net-mvc - ValidationSummary 显示重复的消息

c# - ASP.NET Core 2 中的依赖注入(inject)问题

.net - Blazor 应用程序如何能够在不调用 Startup.cs 中的 MapRazorPages() 的情况下公开 Razor Pages 端点?

c# - 如何在 ASP.NET Core 中手动注册 FluentValidation 验证器?

asp.net-mvc - 如何在 _Layout 页面上设置变量?

c# - 如何在 Controller 中获取数据库上下文

c# - 使用 SignalR 找不到名称为 'x' 的客户端方法