Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

67 lines
2.3 KiB
C#

namespace System.Web.Mvc {
using System;
using System.Globalization;
using System.IO;
using System.Web.Mvc.Resources;
public class WebFormView : BuildManagerCompiledView {
public WebFormView(ControllerContext controllerContext, string viewPath)
: this(controllerContext, viewPath, null, null) {
}
public WebFormView(ControllerContext controllerContext, string viewPath, string masterPath)
: this(controllerContext, viewPath, masterPath, null) {
}
public WebFormView(ControllerContext controllerContext, string viewPath, string masterPath, IViewPageActivator viewPageActivator)
: base(controllerContext, viewPath, viewPageActivator) {
MasterPath = masterPath ?? String.Empty;
}
public string MasterPath {
get;
private set;
}
protected override void RenderView(ViewContext viewContext, TextWriter writer, object instance) {
ViewPage viewPage = instance as ViewPage;
if (viewPage != null) {
RenderViewPage(viewContext, viewPage);
return;
}
ViewUserControl viewUserControl = instance as ViewUserControl;
if (viewUserControl != null) {
RenderViewUserControl(viewContext, viewUserControl);
return;
}
throw new InvalidOperationException(
String.Format(
CultureInfo.CurrentCulture,
MvcResources.WebFormViewEngine_WrongViewBase,
ViewPath));
}
private void RenderViewPage(ViewContext context, ViewPage page) {
if (!String.IsNullOrEmpty(MasterPath)) {
page.MasterLocation = MasterPath;
}
page.ViewData = context.ViewData;
page.RenderView(context);
}
private void RenderViewUserControl(ViewContext context, ViewUserControl control) {
if (!String.IsNullOrEmpty(MasterPath)) {
throw new InvalidOperationException(MvcResources.WebFormViewEngine_UserControlCannotHaveMaster);
}
control.ViewData = context.ViewData;
control.RenderView(context);
}
}
}