我们有多种基本内容类型merge
,News
。每个都从我们的复合材料继承属性:Reviews
& _Page
。这允许我们将所有三种内容类型混合到一个文章模板中。
目前使用_Article
,意味着我们有类似的内容:
IPublishedContent
使用ModelsBuilder,我们不能再这样做了。
结果是模型看起来像这样:
试图做: if (Model.Content.DocumentTypeAlias == "review")
{
// ... Do This
}
,但这意味着我失去了所有其他属性。
您为使用多种内容类型的模板继承了什么模型,或者我们还需要做些什么?
关于此的说明:我很想做_Page> _Article> ContentType,但这意味着巨大的数据丢失。
答案 0 :(得分:1)
如果您执行@inherits UmbracoViewPage<Umbraco.Web.PublishedContentModels.IArticle>
,那么您可以执行var review = Model as Umbraco.Web.PublishedContentModels.Review
之类的操作。如果review
不为空,则表示该网页的类型为Review
。
(顺便说一句,不能记住你是否需要Model.Content
进行演员表。)
答案 1 :(得分:0)
虽然您可以自由地从ModelsBuilder类继承Razor模板,但通常大多数情况下,根据我的经验,使用ModelsBuilder来帮助使用Route Hijacking在控制器中保持标准视图模型。
显然你的工作是创建和维护这些视图模型,但对于许多人来说这是标准做法,无论是否使用Umbraco。
答案 2 :(得分:0)
正如mortenbock所说,你可以做@inherits UmbracoViewPage<IArticle>
,然后你可以通过var isReview = Model is Review
我删除了模型名称的Umbraco.Web.PublishedContentModels.
部分。它没有必要,因为它们已在Views / Web.config中引用。
答案 3 :(得分:0)
您可以使用模型的界面,然后使用1000132;1000151;1000149;1000150;1000152;1000153;1000154;1000155
和is
来检查类型并采取相应的行动。