/// <summary> /// In a Razor layoutpage, renders the generated mvvm model. /// </summary> /// <returns>The mvvm model.</returns> public static IHtmlContent RenderDataModel(this RazorPage razorPage) { var modelname = "model"; var helper = FWDataModelResolverHelper.Serialize(razorPage.ViewContext); var viewmodel = helper.ToScript(modelname); if (!string.IsNullOrWhiteSpace(viewmodel)) { return(new HtmlString($"<script>{viewmodel} fw.bind.add('{modelname}', fw.{modelname}, document.querySelectorAll('[data-type=\"content\"]')[0]);</script>")); } return(new HtmlString(string.Empty)); }
/// <summary> /// Creates the mvvm databind. Should only be called from partial views. /// </summary> /// <param name="htmlHelper">The IHtmlHelper.</param> /// <returns>The MVVM model binding.</returns> public static IHtmlContent Datamodel(this IHtmlHelper htmlHelper) { var modelname = htmlHelper.ViewData.ModelMetadata.UnderlyingOrModelType.Name; var id = Guid.NewGuid(); var helper = FWDataModelResolverHelper.Serialize(htmlHelper.ViewContext); var viewmodel = helper.ToScript(modelname); if (!string.IsNullOrWhiteSpace(viewmodel)) { return(new HtmlString($"<div id=\"{id}\"></div><script>{viewmodel} fw.bind.add('{modelname}', fw.{modelname}, $('#{id}').closest('[data-type=\"body\"]')[0]);</script>")); } return(new HtmlString(string.Empty)); }