public async Task WriteViewModelResponse(IDotvvmRequestContext context, DotvvmView view) { // return the response context.HttpContext.Response.ContentType = "application/json; charset=utf-8"; SetCacheHeaders(context.HttpContext); var serializedViewModel = context.GetSerializedViewModel(); await context.HttpContext.Response.WriteAsync(serializedViewModel); }
public override Task WriteViewModelResponse(IDotvvmRequestContext context, DotvvmView view) { if (context.Configuration.Debug && context.Services.GetService <DiagnosticsRequestTracer>() is DiagnosticsRequestTracer tracer) { var viewModelJson = context.GetSerializedViewModel(); var vmBytes = Encoding.UTF8.GetBytes(viewModelJson); tracer.LogResponseSize(GetCompressedSize(vmBytes), vmBytes.LongLength); } return(base.WriteViewModelResponse(context, view)); }
protected override void RenderControl(IHtmlWriter writer, IDotvvmRequestContext context) { // render resource links var resourceManager = context.ResourceManager; if (resourceManager.BodyRendered) return; resourceManager.BodyRendered = true; // set the flag before the resources are rendered, so they can't add more resources to the list during the render ResourcesRenderer.RenderResources(resourceManager, writer, context, ResourceRenderPosition.Body); // render the serialized viewmodel var serializedViewModel = context.GetSerializedViewModel(); writer.AddAttribute("type", "hidden"); writer.AddAttribute("id", "__dot_viewmodel_root"); writer.AddAttribute("value", serializedViewModel); writer.RenderSelfClosingTag("input"); // init on load writer.RenderBeginTag("script"); writer.WriteUnencodedText($@" window.dotvvm.domUtils.onDocumentReady(function () {{ window.dotvvm.init('root', {JsonConvert.ToString(CultureInfo.CurrentCulture.Name, '"', StringEscapeHandling.EscapeHtml)}); }});"); writer.WriteUnencodedText(RenderWarnings(context)); writer.RenderEndTag(); }