You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /* ****************************************************************************
 | |
|  *
 | |
|  * Copyright (c) Microsoft Corporation. All rights reserved.
 | |
|  *
 | |
|  * This software is subject to the Microsoft Public License (Ms-PL). 
 | |
|  * A copy of the license can be found in the license.htm file included 
 | |
|  * in this distribution.
 | |
|  *
 | |
|  * You must not remove this notice, or any other, from this software.
 | |
|  *
 | |
|  * ***************************************************************************/
 | |
| 
 | |
| namespace System.Web.Mvc {
 | |
|     using System;
 | |
|     using System.Globalization;
 | |
|     using System.IO;
 | |
|     using System.Web.Mvc.Resources;
 | |
| 
 | |
|     public class WebFormView : IView {
 | |
| 
 | |
|         private IBuildManager _buildManager;
 | |
| 
 | |
|         public WebFormView(string viewPath)
 | |
|             : this(viewPath, null) {
 | |
|         }
 | |
| 
 | |
|         public WebFormView(string viewPath, string masterPath) {
 | |
|             if (String.IsNullOrEmpty(viewPath)) {
 | |
|                 throw new ArgumentException(MvcResources.Common_NullOrEmpty, "viewPath");
 | |
|             }
 | |
| 
 | |
|             ViewPath = viewPath;
 | |
|             MasterPath = masterPath ?? String.Empty;
 | |
|         }
 | |
| 
 | |
|         internal IBuildManager BuildManager {
 | |
|             get {
 | |
|                 if (_buildManager == null) {
 | |
|                     _buildManager = new BuildManagerWrapper();
 | |
|                 }
 | |
|                 return _buildManager;
 | |
|             }
 | |
|             set {
 | |
|                 _buildManager = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public string MasterPath {
 | |
|             get;
 | |
|             private set;
 | |
|         }
 | |
| 
 | |
|         public string ViewPath {
 | |
|             get;
 | |
|             private set;
 | |
|         }
 | |
| 
 | |
|         public virtual void Render(ViewContext viewContext, TextWriter writer) {
 | |
|             if (viewContext == null) {
 | |
|                 throw new ArgumentNullException("viewContext");
 | |
|             }
 | |
| 
 | |
|             object viewInstance = BuildManager.CreateInstanceFromVirtualPath(ViewPath, typeof(object));
 | |
|             if (viewInstance == null) {
 | |
|                 throw new InvalidOperationException(
 | |
|                     String.Format(
 | |
|                         CultureInfo.CurrentUICulture,
 | |
|                         MvcResources.WebFormViewEngine_ViewCouldNotBeCreated,
 | |
|                         ViewPath));
 | |
|             }
 | |
| 
 | |
|             ViewPage viewPage = viewInstance as ViewPage;
 | |
|             if (viewPage != null) {
 | |
|                 RenderViewPage(viewContext, viewPage);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             ViewUserControl viewUserControl = viewInstance as ViewUserControl;
 | |
|             if (viewUserControl != null) {
 | |
|                 RenderViewUserControl(viewContext, viewUserControl);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             throw new InvalidOperationException(
 | |
|                 String.Format(
 | |
|                     CultureInfo.CurrentUICulture,
 | |
|                     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);
 | |
|         }
 | |
|     }
 | |
| }
 |