using System.IO; using System.Threading.Tasks; using Microsoft.AspNet.Mvc.ModelBinding; namespace Microsoft.AspNet.Mvc.Razor { public abstract class RazorView : RazorView { public TModel Model { get; set; } public dynamic ViewBag { get { return ViewData; } } public ViewData ViewData { get; set; } public HtmlHelper Html { get; set; } public override Task RenderAsync(ViewContext context, TextWriter writer) { var viewData = context.ViewData as ViewData; ViewData = viewData ?? new ViewData(context.ViewData); Model = ViewData.Model; InitHelpers(context); return base.RenderAsync(context, writer); } private void InitHelpers(ViewContext context) { Html = new HtmlHelper(context.HttpContext, ViewData); } } }