asp.net-mvc - MVC 6 中 @Scripts.Render 的替代品是什么

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

我正在尝试在我的 MVC 6 上运行一些 d3js,并且正在查看这个示例 https://github.com/DustinEwers/D3-DotNetMVC-Demos/blob/master/D3Demos/Views/TagDemos/BasicBarChart.cshtml它使用

@Scripts.Render("~/bundles/d3")
@section Scripts{

但是如果我这样做,我就会得到

The name 'Scripts' does not exist in the current context

那么 MVC 6 中有没有一种新方法可以做到这一点?

最佳答案

在 ASP.NET 5 中,没有这样的 Scripts.Render 方法。要渲染脚本,您可以使用环境标签助手。

您不必使用环境标记帮助器。您可以直接将脚本标签放入布局文件中。但是环境助手允许我们根据环境有条件地渲染脚本。 (缩小捆绑版本与全非缩小版本)

这是语法,您可以将其包含在布局文件中。

<environment names="Development">
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/js/d3.js"></script>
</environment>
<environment names="Staging,Production">
    <script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"
            asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
            asp-fallback-test="window.jQuery">
    </script>            
    <script src="~/js/d3.min.js" asp-file-version="true"></script>
</environment>

假设您的脚本文件 d3.js 和 d3.min.js 存在于 ~/js 目录中。

此外,您还需要确保已调用 Configure() 方法内的 UseStaticFiles() 方法(在 Startup.cs 内) )

public void Configure(IApplicationBuilder app, IHostingEnvironment env,  
                                                             ILoggerFactory loggerFactory)
{
     //Other configuration goes here
     app.UseStaticFiles();  // This enables static file serving from the app.
     app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
}

UseStaticFiles()扩展方法启用静态文件服务,包括js文件、css文件等。

当您在开发模式下运行应用程序时,它将在环境“开发”中渲染脚本标签,当您在暂存或生产模式下运行它时,它将在“开发”下渲染脚本标签>“登台、生产”环境。

您可以通过右键单击项目并选择properties->Debug并指定环境变量Hosting:Environment的值来更改环境值

您可以看到我已在暂存/生产环境中包含了 js 文件的缩小版本。这不是必需的,但却是首选方法,因为它会节省一些带宽。 (如果您确实想这样做,您可以将未缩小的版本也放在那里,而不是缩小的版本。)。如果您有单个捆绑文件,也可以在此处使用该文件而不是单个文件。

如果您还没有缩小版本,则可以通过运行 gulp 任务进行缩小来生成该版本。(这包含在新 Web 应用程序中的默认 gulp.js 文件中模板)。您只需打开任务运行程序并运行缩小任务即可。

enter image description here

如果您不希望每次都手动运行此任务,则可以选择Bindings -> Before build,这样每次构建项目时都会自动运行该 purtular gulp 任务。

关于asp.net-mvc - MVC 6 中 @Scripts.Render 的替代品是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255965/

相关文章:

asp.net-mvc - MvcContrib 网格和显示/编辑模板

javascript - 使用 D3 创建一个表,其中两行是兄弟

javascript - 尽管格式看似正确,但 d3.js 无法将我的字符串解析为日期? (v4)

javascript - C3 中带有 JSON 数据的多个 Y 轴

asp.net-mvc - Controller 操作未从 JSON 读取 Guid POST

Asp.net Mvc 6 登录后立即获取用户声明

asp.net-mvc - 如何创建ELMAH SQL Server数据库?

javascript - 绑定(bind)后获取kendo scheduler数据源

c# - ASP.NET MVC - 为什么这些异步任务会立即运行?

asp.net-core-mvc - 为什么 Microsoft.AspNetCore.Http.StatusCodes 不包含 422 无法处理的实体?