Basically, whenever I try to run the following code from commerce content page I get the following error: "InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'EPiServer.Core.ContentArea', but this ViewDataDictionary instance requires a model item of type 'OurOrganization.ProductPage.ProductPageViewModel'."
@Html.PropertyFor(x => x.Settings.BlockArea, new { Tag = "wrap" })
The Tag property seems to be treated as a template name, and in the end - in PropertyRenderer.ExistDisplayTemplateWithName - there's a call to ICompositeViewEngine.FindView(...). This seems to return different results even though input is similar.
The way I reproduce the error is by executing the following row from a regular page controller - PageController<T> - and from a commerce controller - ContentController<T>.
var x = _viewEngine.FindView(ControllerContext, "DisplayTemplates/wrap", false);
At least in my case, this results in x.Success being false when called from PageController and x.Success being true when called from ContentController<T>, and the fact that Success is true is what in the end triggers the exception.
Edit: I should also say, my interpretation is that the exception message is misleading.
Edit #2: To make it a little more difficult - also, if there's a outer PropertyFor(...) with a rendering tag, this will be picked up in a inner PropertyFor via DefaultModelTemplateTagResolver, even though the inner PropertyFor didn't specify a rendering tag.
Basically, whenever I try to run the following code from commerce content page I get the following error: "InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'EPiServer.Core.ContentArea', but this ViewDataDictionary instance requires a model item of type 'OurOrganization.ProductPage.ProductPageViewModel'."
The Tag property seems to be treated as a template name, and in the end - in PropertyRenderer.ExistDisplayTemplateWithName - there's a call to ICompositeViewEngine.FindView(...). This seems to return different results even though input is similar.
The way I reproduce the error is by executing the following row from a regular page controller - PageController<T> - and from a commerce controller - ContentController<T>.
At least in my case, this results in x.Success being false when called from PageController and x.Success being true when called from ContentController<T>, and the fact that Success is true is what in the end triggers the exception.
Edit: I should also say, my interpretation is that the exception message is misleading.
Edit #2: To make it a little more difficult - also, if there's a outer PropertyFor(...) with a rendering tag, this will be picked up in a inner PropertyFor via DefaultModelTemplateTagResolver, even though the inner PropertyFor didn't specify a rendering tag.