我尝试过使用强类型模型(将IMAPStore.class.getPackage().getImplementaionVersion()
设置为Umbraco.ModelsBuilder.ModelsMode
或AppData
)一段时间了,而且我从未完全理解它是如何工作的。
我已经更改了Dll
值,我在后台的ModelsBuilder中生成了模型,然后我将Umbraco.ModelsBuilder.ModelsMode
包含到Visual Studio中,但那又是什么?
App_Data\Models
这是我的主页视图的代码。无论我尝试什么,我都无法从我的内容中访问@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Home>
@using Our.Umbraco.Vorto.Models;
@using Our.Umbraco.Vorto.Extensions;
@using ContentModels = Umbraco.Web.PublishedContentModels;
或@Model.PROPERTY
。我可以在@CurrentPage.PROPERTY
文件中看到不同的属性。
我需要采取哪些步骤才能执行MODEL.generated.cs
?
答案 0 :(得分:1)
您不是在谈论“动态”模型,而是由模型构建器生成的强类型模型。默认情况下,Umbraco附带PureLive设置,该设置将模型保存在内存中并在运行中生成它们。它可以被视为“动态”。
该工具及其行为在此处有详细记录:https://github.com/zpqrtbnk/Zbu.ModelsBuilder/wiki
关于它的模式,你可以在这个地方找到所有关于它的信息:https://github.com/zpqrtbnk/Zbu.ModelsBuilder/wiki/Builder-Modes
但回答你的问题 - 在你更改配置之后,你需要编译你的应用程序,因为你需要将这些类保存在你运送你的网站的DLL中。您还可以直接从Umbraco Backoffice的开发人员仪表板中重新生成模型。
您需要记住,如果您想使用DLL,LiveDLL或PureLive配置 - 您需要摆脱AppData内部生成的类或此模式使用的任何其他目录,因为您将遇到错误说关于'更多那种类型想要成为内容类型文件的模型'。
之后,您应该能够通过 Model.Content.PropertyAlias 访问文档类型的所有属性。您可能错过了内容对象,该对象是您文档的强类型,IPublishedContent表示。
希望它能帮助你让它发挥作用:)
答案 1 :(得分:1)
好的,似乎最新的7.6.9版本(或者可能是7.6.8)发生了一些变化。这就是我现在要做的事情:
<add key="Umbraco.ModelsBuilder.Enable" value="true" />
<add key="Umbraco.ModelsBuilder.ModelsMode" value="Dll" />
然后我可以进入后台并生成模型。模型 包含在项目中(位置:~\App_Data\Models\
)。还必须包含Umbraco.Web.PublishedContentModels.dll
文件夹中的~\bin\
。
然后,因为.NET Core我认为,当我尝试加载我的应用程序时,我收到了一个错误:
多个类型希望成为内容类型文件
的模型
这是因为我在~\bin\
中加入了所有内容,这意味着我还包含了Project.dll
,Project.dll.config
和Project.pdb
文件。 Project.dll
文件显然也包含相同的模型,所以我不得不排除这3个文件。
现在它完全有效,我现在可以完美地@Model.Content.PROPERTY
完成。