如何轻松地在视图页面的脚本块中缩小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) 我正在使用几个数据加载器,它们使用注入的查询服务(反过来又依赖于 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