private static HTMLElement BuildBody(IFormView <HTMLElement> newMaster)
        {
            var result             = new HTMLDivElement();
            var templateWithParams = BuildTemplateAndParams(newMaster.Render(result));

            Logger.Debug(typeof(FormCanvasExtensions), "BuildBody() got template={0} and params={1}", templateWithParams.Item1, templateWithParams.Item2.Values.PrettyToString());

            result.InnerHTML = templateWithParams.Item1;

            foreach (var idToView in templateWithParams.Item2)
            {
                var id           = idToView.Key + "";
                var toBeReplaced = result.FindContainedElementByIdOrNull(id);
                var replaceTo    = idToView.Value;
                //Logger.Debug(typeof(FormCanvasExtensions),"BuildBody() will replace {0} having id={1} with iview {2}", toBeReplaced.InnerHTML, id, replaceTo.InnerHTML);

                toBeReplaced.ParentNode.ReplaceChild(
                    replaceTo,
                    toBeReplaced);

                //Logger.Debug(typeof(FormCanvasExtensions),"BuildBody() replaced and container is now {0}", result.InnerHTML);
            }

            Logger.Debug(typeof(FormCanvasExtensions), "BuildBody() ending");
            return(result);
        }