Browse Source

Make WebRequestResources store resources according to the current request Path.

Resolve #4309
pull/4316/head
maliming 6 years ago
parent
commit
cf8c0d0231
  1. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestResources.cs
  3. 28
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestResources.cs

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs

@ -73,7 +73,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
throw new AbpException($"Could not find the bundle file '{bundleFile}' from {nameof(IWebContentFileProvider)}");
}
AddHtmlTag(viewContext, context, output, bundleFile + "?_v=" + file.LastModified.UtcTicks);
if (file.Length > 0)
{
AddHtmlTag(viewContext, context, output, bundleFile + "?_v=" + file.LastModified.UtcTicks);
}
}
stopwatch.Stop();

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestResources.cs

@ -4,6 +4,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public interface IWebRequestResources
{
List<string> TryAdd(IEnumerable<string> resources);
List<string> TryAdd(List<string> resources);
}
}

28
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestResources.cs

@ -1,23 +1,35 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Http;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public class WebRequestResources : IWebRequestResources, IScopedDependency
{
protected List<string> Resources { get; }
protected Dictionary<string, List<string>> Resources { get; }
public WebRequestResources()
protected IHttpContextAccessor HttpContextAccessor{ get; }
public WebRequestResources(IHttpContextAccessor httpContextAccessor)
{
Resources = new List<string>();
HttpContextAccessor = httpContextAccessor;
Resources = new Dictionary<string, List<string>>();
}
public List<string> TryAdd(IEnumerable<string> resources)
public List<string> TryAdd(List<string> resources)
{
var resourceToBeAdded = resources.Except(Resources).ToList();
Resources.AddRange(resourceToBeAdded);
return resourceToBeAdded;
var path = HttpContextAccessor.HttpContext?.Request?.Path ?? "";
if (Resources.TryGetValue(path, out var res))
{
var resourceToBeAdded = resources.Except(res).ToList();
res.AddRange(resourceToBeAdded);
return resourceToBeAdded;
}
Resources.Add(path, resources);
return resources;
}
}
}
}

Loading…
Cancel
Save