在Umbraco 7.6.9中使用强类型模型



我已经尝试使用强类型模型(将Umbraco.ModelsBuilder.ModelsMode设置为AppDataDll)一段时间了,但我从未完全理解它是如何工作的。

我已经更改了Umbraco.ModelsBuilder.ModelsMode的值,并在后台ModelsBuilder中生成了模型,然后我将App_DataModels包含在Visual Studio中,但接下来呢?

@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文件中看到不同的属性。

为了做@Model.PROPERTY之类的事情,我需要采取哪些步骤?

好吧,在最新的7.6.9版本(或者7.6.8)中似乎有一些变化。这就是我现在必须做的:

<add key="Umbraco.ModelsBuilder.Enable" value="true" />
<add key="Umbraco.ModelsBuilder.ModelsMode" value="Dll" />

然后我可以去后台生成模型。模型包含在项目中(位置:~App_DataModels)。还必须包括来自~bin文件夹的Umbraco.Web.PublishedContentModels.dll

然后,我想,由于.NET Core的原因,当我尝试加载应用程序时出现了一个错误,上面写着:

多个类型希望成为内容类型文件的模型

这是因为我在~bin中包含了所有,这意味着我还包含了Project.dllProject.dll.configProject.pdb文件。显然,Project.dll文件也包含相同的模型,所以我不得不排除这3个文件。

现在它很简单,我现在可以完美地完成@Model.Content.PROPERTY了。

您谈论的不是"动态"模型,而是ModelsBuilder生成的强类型模型。默认情况下,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访问文档类型的所有属性。您可能错过了Content对象,它是文档的强类型IPublishedContent表示形式。

希望它能帮助你让它发挥作用:)

相关内容

  • 没有找到相关文章

最新更新