How to access Models from ModelsBuilder when developing packages?
Hi all,
I am working on a package which included document types, custom section, fetching external data, ...
We have a DT called Products and a DT called Product Item which are added during the installation of the package.
We have 2 properties that are hidden for everyone, because these are populated from the external datasource during the Render process in our RenderMvcController.
public class ProductsController : RenderMvcController
{
// Index
public override ActionResult Index(RenderModel model)
{
if (model?.Content != null && model.Content.Children.Any())
{
foreach (var productItem in model.Content.Children)
{
// fill up the properties
}
}
return base.Index(model);
}
}
Inside this controller we have IPublishedContent objects which can't be changed so I need to convert them to my strongly typed models. But here I am stuck.
My package solution has 3 projects: Core - Web - Site.
Site contains the Umbraco installation, Views, ... So its basically my test environment. The Core contains the Core classes like repo, services, ... The Web contains my controllers, like the one above.
How can I access my Strongly Typed models when using ModelsBuilder and make it flexible so that whatever mode you choose, my package can access the models? I need some kind of reference to the PublishedContentModels to access my package DT classes.
Hmmm now I see that the properties of the Models of the ModelsBuilder only have getters and no setters.
How can I manipulate my typed model in my controller only for the View, so no update in the database?
Reason: I have products, and I want to show the current price and stock info by making a call to the external tool which holds this data before showing it into the view.
I can't use a ViewModel because then the editor doesn't have control about the stock and price properties in the backoffice. We have a flag which indicates to show the real price and stock info by making a call to the external tool, if false then it will use the current values as set in the backoffice.
How to access Models from ModelsBuilder when developing packages?
Hi all,
I am working on a package which included document types, custom section, fetching external data, ...
We have a DT called Products and a DT called Product Item which are added during the installation of the package.
We have 2 properties that are hidden for everyone, because these are populated from the external datasource during the Render process in our RenderMvcController.
Inside this controller we have
IPublishedContent
objects which can't be changed so I need to convert them to my strongly typed models. But here I am stuck.My package solution has 3 projects: Core - Web - Site.
Site contains the Umbraco installation, Views, ... So its basically my test environment. The Core contains the Core classes like repo, services, ... The Web contains my controllers, like the one above.
How can I access my Strongly Typed models when using ModelsBuilder and make it flexible so that whatever mode you choose, my package can access the models? I need some kind of reference to the PublishedContentModels to access my package DT classes.
/Michaël
Use the LiveAppData for models builder and push the models to a different folder in your project. The
Umbraco.ModelsBuilder.ModelsDirectory
setting as documentated here: https://our.umbraco.com/Documentation/Reference/Templating/Modelsbuilder/Install-And-Configure is created for that.Like that you can include your models in the project which you want. (at least if you activate
Umbraco.ModelsBuilder.AcceptUnsafeModelsDirectory
)Hmmm now I see that the properties of the Models of the ModelsBuilder only have getters and no setters.
How can I manipulate my typed model in my controller only for the View, so no update in the database?
Reason: I have products, and I want to show the current price and stock info by making a call to the external tool which holds this data before showing it into the view.
I can't use a ViewModel because then the editor doesn't have control about the stock and price properties in the backoffice. We have a flag which indicates to show the real price and stock info by making a call to the external tool, if false then it will use the current values as set in the backoffice.
/Michaël
is working on a reply...