EPiServer页面和块内的逻辑

问题描述 投票:0回答:1

我有一个实例,我在我的模型上使用一个接口作为过滤我的块和页面列表的方法(即选择所有块或页面“IMyInterface”),但同时需要转换为另一种类型用于显示(即列出所有块/页面,然后为每个块/页面,转换为“MyDisplayType”并传递到局部视图)

我的问题:我的EPiServer页面和块(我的模型)中的逻辑是否被劝阻?

编辑以响应@Ted:PageViewModel上的属性不起作用,属性==“包括我”,其他东西做“包含行为”(这就是我的意思是过滤),因为我有一个界面在我的模型上,我自然也有与模型中的属性相关联的逻辑(因为属性在模型上)。如果我的类中没有具有该属性的逻辑,那么我需要一个“辅助类”来托管我认为最好留在模型中的代码。

model-view-controller episerver
1个回答
1
投票

也许我误解了这个问题,但我想说更常见的方法是拥有特定的视图模型类型。

所以,你的观点将有@model IPageViewModel<SomePageType>而不仅仅是@model SomePageType

在你的控制器中,你将return View(new SomePageViewModel(currentPage))而不是return View(currentPage)

同样的原则适用于其他内容类型(块,媒体等)。

除了SetDefaultValues等特定方法之外,我会远离内容类型本身的逻辑。

在您的特定情况下,您可能会将内容列表作为属性添加到最初传递的视图模型实例中,然后在视图中枚举该属性以使用局部视图呈现每个项目?

编辑:我认为界面非常适合“分组”内容类型,例如获取所有IArticle页面,无论确切的内容类型如何。我通常会在存储库类或控制器操作方法中放置用于检索内容集合(例如all article pages)的逻辑。当然,除了通过接口过滤之外,这种逻辑还可以反映属性。

© www.soinside.com 2019 - 2024. All rights reserved.