aspnetcore/src/Microsoft.AspNet.Mvc.Razor/RazorViewOfT.cs

36 lines
958 B
C#

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