Calyptus.Mvc.ActionBaseAttribute.OnRender C# (CSharp) Method

OnRender() protected method

protected OnRender ( IHttpContext context, object value ) : void
context IHttpContext
value object
return void
		protected virtual void OnRender(IHttpContext context, object value)
		{
			if (_returnType == typeof(void)) return;

			IViewTemplate template = value as IViewTemplate;
			if (template != null)
			{
				IView view = context.ViewFactory != null ? context.ViewFactory.FindView(template) : null;
				if (view != null)
					value = view;
				else if (!(template is IRenderable))
					value = MockViewFactory.CreateView(template);
			}

			IRenderable renderable = value as IRenderable;
			if (renderable != null)
			{
				renderable.Render(context);
				return;
			}

			Stream stream = value as Stream;
			if (stream != null)
			{
				WriteStream(stream, context.Response);
				return;
			}

			string requestType = context.Request.ContentType;
			
			if (IsJson(ResponseType) || (ResponseType == null && (IsJson(requestType) || "JSON".Equals(context.Request.Headers["X-Request"], StringComparison.InvariantCultureIgnoreCase) || AcceptJsonBeforeXml(context.Request.AcceptTypes))))
			{
				if (ResponseType == null) context.Response.ContentType = "application/json";
				if (value == null) context.Response.Write("null");
				else
				{
					context.Response.Charset = context.Response.ContentEncoding.WebName;
					StringBuilder sb = new StringBuilder();
					JavaScriptSerializer serializer = new JavaScriptSerializer();
					serializer.Serialize(value, sb);
					context.Response.Write(sb.ToString());
				}
			}

			/*if (IsJson(ResponseType) || (ResponseType == null && (IsJson(requestType) || "JSON".Equals(context.Request.Headers["X-Request"], StringComparison.InvariantCultureIgnoreCase) || AcceptJsonBeforeXml(context.Request.AcceptTypes))))
			{
				if (ResponseType == null) context.Response.ContentType = "application/json";
				if (value == null && _returnType == null) context.Response.Write("null");
				else
				{
					context.Response.Charset = context.Response.ContentEncoding.WebName;
					using (var writer = JsonReaderWriterFactory.CreateJsonWriter(context.Response.OutputStream, context.Response.ContentEncoding))
					{
						var serializer = new DataContractJsonSerializer(value == null ? _returnType : value.GetType());
						serializer.WriteObject(writer, value);
					}
				}
			}
			else if (ResponseType == null || IsXml(ResponseType))
			{
				if (ResponseType == null) context.Response.ContentType = "application/xml";
				if (value != null || _returnType != null)
					using (var writer = System.Xml.XmlWriter.Create(context.Response.Output))
					{
						var xmlnode = value as XmlNode;
						if (xmlnode != null)
							xmlnode.WriteTo(writer);
						else
						{
							var xnode = value as XNode;
							if (xnode != null)
								xnode.WriteTo(writer);
							else
							{
								var serializer = new DataContractSerializer(value == null ? _returnType : value.GetType());
								serializer.WriteObject(writer, value);
							}
						}
					}
			}*/
		}