From f8179f03e4b5cf8d815ba81abb776ab99fe37036 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Thu, 13 Mar 2014 16:51:51 -0700 Subject: [PATCH] Trigger view rendering asynchronously. This is as simple as modifying the base class to return task and await the ExecuteAsync method. Also added a piece to the sample project to verify functionality. --- samples/MvcSample.Web/Views/Shared/MyView.cshtml | 10 +++++++++- src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs | 2 +- src/Microsoft.AspNet.Mvc.Razor/RazorView.cs | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/samples/MvcSample.Web/Views/Shared/MyView.cshtml b/samples/MvcSample.Web/Views/Shared/MyView.cshtml index 3f8a25f030..bcf9e01768 100644 --- a/samples/MvcSample.Web/Views/Shared/MyView.cshtml +++ b/samples/MvcSample.Web/Views/Shared/MyView.cshtml @@ -6,6 +6,13 @@ string nullValue = null; } +@functions { + public async Task AsyncValueRetrieval() + { + return "Hello World"; + } +} +

ASP.NET

ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.

@@ -13,7 +20,8 @@

Hello @Model.Name! Happy @Model.Age birthday.

- +

This value was retrieved asynchronously: @(await AsyncValueRetrieval())

+

Getting started

diff --git a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs index 9589c5b8cb..6898707fad 100644 --- a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs +++ b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs @@ -32,7 +32,7 @@ namespace Microsoft.AspNet.Mvc.Razor _baseType = baseType; DefaultBaseClass = baseType + ""; GeneratedClassContext = new GeneratedClassContext( - executeMethodName: "Execute", + executeMethodName: "ExecuteAsync", writeMethodName: "Write", writeLiteralMethodName: "WriteLiteral", writeToMethodName: "WriteTo", diff --git a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs index 5408a5134a..a49c75ce56 100644 --- a/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs +++ b/src/Microsoft.AspNet.Mvc.Razor/RazorView.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Mvc.Razor using (var bodyWriter = new StringWriter(contentBuilder)) { Output = bodyWriter; - Execute(); + await ExecuteAsync(); } var bodyContent = contentBuilder.ToString(); @@ -60,7 +60,7 @@ namespace Microsoft.AspNet.Mvc.Razor await layoutView.RenderAsync(context, writer); } - public abstract void Execute(); + public abstract Task ExecuteAsync(); public virtual void Write(object value) {