Skip to content

Enabling debugging for embedded razor views

Harry McIntyre edited this page Sep 2, 2016 · 2 revisions

 public class MyCustomRazorHostFactory : WebRazorHostFactory
    {
        public override System.Web.WebPages.Razor.WebPageRazorHost CreateHost(string virtualPath, string physicalPath)
        {
            // Implementation stolen from MvcRazorHostFactory :)
            var host = base.CreateHost(virtualPath, physicalPath);

            if (!host.IsSpecialPage)
            {
                return new MyCustomRazorHost(virtualPath, physicalPath);
            }

            return host;
        }
    }

    public class MyCustomRazorHost : MvcWebPageRazorHost
    {
        public MyCustomRazorHost(string virtualPath, string physicalPath)
            : base(virtualPath, physicalPath)
        {
            var vpp =
                (EmbeddedResourceVirtualPathProvider.Vpp) System.Web.Hosting.HostingEnvironment.VirtualPathProvider;
            var resource = vpp.GetResourceFromVirtualPath(virtualPath);

            if (resource != null)
            {
                PhysicalPath = resource.Filename;
            }
        }
    }

In web.config

<system.web.webPages.razor>
    <host factoryType="My.Custom.Namespace.MyCustomRazorHostFactory" />
</system.web.webPages.razor>

Clone this wiki locally