/// <summary> /// Asynchronously renders the view using the specified <paramref name="context" />. /// </summary> /// <param name="context">The <see cref="T:Microsoft.AspNet.Mvc.Rendering.ViewContext" />.</param> /// <returns> /// A <see cref="T:System.Threading.Tasks.Task" /> that on completion renders the view. /// </returns> public async Task RenderAsync(ViewContext context) { var jsEngine = context.HttpContext.Request.HttpContext.Items["JsEngine"] as IJsEngine; if (jsEngine == null) { throw new Exception("Couldn't get IJsEngine from the context request items."); } var result = await _jsEngineInvoker.InvokeEngine(jsEngine, ViewType, Path, context); if (ViewType == ViewType.Full) { if (!string.IsNullOrEmpty(result.Redirect)) { context.HttpContext.Response.Redirect(result.Redirect); return; } context.HttpContext.Response.StatusCode = result.Status; await context.Writer.WriteAsync(result.Html); } else { await context.Writer.WriteAsync(result.Html); } }