public async Task ExecuteAsync(WidgetContext context)
{
var viewEngine = ViewEngine ?? ResolveViewEngine(context);
var viewData = ViewData ?? context.ViewData;
bool isNullOrEmptyViewName = string.IsNullOrEmpty(ViewName);
string state = null; // TODO: Resolve from value provider?
string qualifiedViewName;
if (!isNullOrEmptyViewName && (ViewName[0] == '~' || ViewName[0] == '/'))
{
qualifiedViewName = ViewName;
}
else
{
qualifiedViewName = string.Format(ViewPath, context.WidgetDescriptor.ShortName, isNullOrEmptyViewName ? (state ?? DefaultViewName) : ViewName);
}
var view = FindView(context.ViewContext, viewEngine, qualifiedViewName);
var childViewContext = new ViewContext(
context.ViewContext,
view,
viewData,
context.Writer);
using (view as IDisposable)
{
await view.RenderAsync(childViewContext);
}
}