// 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 System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Mvc.ViewEngines;
namespace Microsoft.AspNet.Mvc.Razor
{
///
/// Represents the default implementation that creates
/// instances with a given .
///
public class RazorViewFactory : IRazorViewFactory
{
private readonly HtmlEncoder _htmlEncoder;
private readonly IRazorPageActivator _pageActivator;
private readonly IViewStartProvider _viewStartProvider;
///
/// Initializes a new instance of RazorViewFactory
///
/// The used to activate pages.
/// The used for discovery of _ViewStart
/// pages
public RazorViewFactory(
IRazorPageActivator pageActivator,
IViewStartProvider viewStartProvider,
HtmlEncoder htmlEncoder)
{
_pageActivator = pageActivator;
_viewStartProvider = viewStartProvider;
_htmlEncoder = htmlEncoder;
}
///
public IView GetView(
IRazorViewEngine viewEngine,
IRazorPage page,
bool isPartial)
{
if (viewEngine == null)
{
throw new ArgumentNullException(nameof(viewEngine));
}
if (page == null)
{
throw new ArgumentNullException(nameof(page));
}
var razorView = new RazorView(
viewEngine,
_pageActivator,
_viewStartProvider,
page,
_htmlEncoder,
isPartial);
return razorView;
}
}
}