小编x56*_*657的帖子

如何在视图页面上缩小脚本块内的JavaScript

如何轻松地在视图页面的脚本块中缩小JavaScript?

我有一些页面特定的脚本,希望放在特定的视图页面上.但ASP.NET MVC4捆绑和缩小仅适用于脚本文件,而不适用于视图页面中的脚本代码.

UPDATE

我接受了Sohnee的建议,将脚本解压缩到文件中.但我需要在特定的页面上使用它们,所以我最终做的是:

在布局页面上,我为页面特定的javascript块创建了一个可选部分:

    @RenderSection("js", required: false)
</body>
Run Code Online (Sandbox Code Playgroud)

然后在视图页面中,让我们说Index.cshtml,我像这样渲染脚本部分:

@section js{    
    @Scripts.Render("~/bundles/js/" + Path.GetFileNameWithoutExtension(this.VirtualPath))
}
Run Code Online (Sandbox Code Playgroud)

如您所见,它假设javascript filename(index.js)与视图页面名称(index.cshtml)相同.然后在捆绑配置中,我有:

var jsFiles = Directory.GetFiles(HttpContext.Current.Server.MapPath("Scripts/Pages"), "*.js");
foreach (var jsFile in jsFiles)
{
    var bundleName = Path.GetFileNameWithoutExtension(jsFile);
    bundles.Add(new ScriptBundle("~/bundles/js/" + bundleName).Include(
    "~/Scripts/pages/" + Path.GetFileName(jsFile)));
}
Run Code Online (Sandbox Code Playgroud)

然后,如果你在index页面上,HTML输出将是:

    <script src="/bundles/js/Index?v=ydlmxiUb9gTRm508o0SaIcc8LJwGpVk-V9iUQwxZGCg1"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

如果你在products页面上,HTML输出将是:

    <script src="/bundles/js/Products?v=ydlmxiUb9gTRm508o0SaIcc8LJwGpVk-V9iUQwxZGCg1"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4

25
推荐指数
3
解决办法
1万
查看次数

如何处理数据加载器/GraphQL 嵌套查询中的并发 DbContext 访问?

我正在使用几个数据加载器,它们使用注入的查询服务(反过来又依赖于 DbContext)。它看起来像这样:

Field<ListGraphType<UserType>>(
  "Users",
  resolve: context =>
  {
    var loader = accessor.Context.GetOrAddBatchLoader<Guid, IEnumerable<User>>(
      "MyUserLoader",
      userQueryService.MyUserFunc);

    return loader.LoadAsync(context.Source.UserId);
  });
Run Code Online (Sandbox Code Playgroud)
Field<ListGraphType<GroupType>>(
  "Groups",
  resolve: context =>
  {
    var loader = accessor.Context.GetOrAddBatchLoader<Guid, IEnumerable<Group>>(
      "MyGroupLoader",
      groupQueryService.MyGroupFunc);

    return loader.LoadAsync(context.Source.GroupId);
  });
Run Code Online (Sandbox Code Playgroud)

当我运行同时使用两个数据加载器的嵌套查询时,出现异常 "A second operation started on this context before a previous asynchronous operation completed"因为两个数据加载器同时使用相同的 DbContext。

在查询中允许并发数据库访问而不必仔细管理 DbContexts 的最佳方法是什么ServiceLifeTime.Transient?或者数据加载器是否可以公开一种方法来知道何时处理瞬态 DbContext?

entity-framework entity-framework-core graphql graphql-dotnet dataloader

5
推荐指数
1
解决办法
783
查看次数