private ViewResultBase EncapsulateView(ControllerBase controller, ModifiableEntity entity, string prefix, VisualConstructStyle preferredStyle, string partialViewName, bool? readOnly, bool showOperations, bool? saveProtected)
        {
            Entity ident = entity as Entity;

            if (ident == null)
                throw new InvalidOperationException("Visual Constructor doesn't work with EmbeddedEntities");


            switch (preferredStyle)
            {
                case VisualConstructStyle.PopupView:
                    return controller.PopupView(ident, new PopupViewOptions(prefix)
                    {
                        PartialViewName = partialViewName,
                        ReadOnly = readOnly,
                        SaveProtected = saveProtected,
                        ShowOperations = showOperations
                    });
                case VisualConstructStyle.PopupNavigate:
                    return controller.PopupNavigate(ident, new PopupNavigateOptions(prefix)
                    {
                        PartialViewName = partialViewName,
                        ReadOnly = readOnly,
                        ShowOperations = showOperations
                    });
                case VisualConstructStyle.PartialView:
                    return controller.PartialView(ident, prefix, partialViewName);
                case VisualConstructStyle.View:
                    return controller.NormalPage(ident, new NavigateOptions { PartialViewName = partialViewName });
                default:
                    throw new InvalidOperationException();
            }
        }