Add PageActionDescriptorChangeProvider to allow reloading on page changes

This commit is contained in:
Pranav K 2017-02-07 12:53:44 -08:00
parent 2ff80ffb49
commit 690ef186a3
3 changed files with 27 additions and 1 deletions

View File

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO;
using Microsoft.AspNetCore.Razor.Evolution;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Primitives;
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
{
@ -41,6 +42,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
return EnumerateFiles(_provider.GetDirectoryContents(path), path, "");
}
public virtual IChangeToken Watch(string pattern) => _provider.Watch(pattern);
private IEnumerable<RazorProjectItem> EnumerateFiles(IDirectoryContents directory, string basePath, string prefix)
{
if (directory.Exists)

View File

@ -3,12 +3,12 @@
using System;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure;
using Microsoft.AspNetCore.Mvc.RazorPages.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.DependencyInjection
{
@ -67,6 +67,7 @@ namespace Microsoft.Extensions.DependencyInjection
services.TryAddSingleton<IPageHandlerMethodSelector, DefaultPageHandlerMethodSelector>();
services.TryAddSingleton<PageResultExecutor>();
services.TryAddSingleton<PageArgumentBinder, DefaultPageArgumentBinder>();
services.TryAddSingleton<IActionDescriptorChangeProvider, PageActionDescriptorChangeProvider>();
}
}
}

View File

@ -0,0 +1,22 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc.Razor.Internal;
using Microsoft.AspNetCore.Razor.Evolution;
using Microsoft.Extensions.Primitives;
namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal
{
public class PageActionDescriptorChangeProvider : IActionDescriptorChangeProvider
{
private readonly RazorProject _razorProject;
public PageActionDescriptorChangeProvider(RazorProject razorProject)
{
_razorProject = razorProject;
}
public IChangeToken GetChangeToken() => ((DefaultRazorProject)_razorProject).Watch("**/*.cshtml");
}
}