EPiServer 页面和块中的逻辑
Logic inside EPiServer Pages and Blocks
我有一个实例,我在我的模型上使用一个接口来过滤我的块和页面以获取列表(即 select 所有块或页面 "IMyInterface"),但是随之而来的是转换为另一种显示类型的要求(即列出所有 blocks/pages,然后对于每个 block/page,转换为 "MyDisplayType" 并传递给局部视图)
我的问题:是否不鼓励我的 EPiServer 页面和块(我的模型)中的逻辑?
编辑以回应@Ted:
PageViewModel 上的一个属性不起作用,属性 == "include me","act of inclusion" 有其他功能(这就是我所说的过滤的意思),因为我的模型上有一个接口,这很自然对我来说也有与模型中的属性相关联的逻辑(因为属性在模型上)。如果我的 class 中没有具有属性的逻辑,那么我需要一个 "helper class" 来托管我认为最好留在模型中的代码。
也许我误解了这个问题,但我会说更常见的方法是拥有特定的视图模型类型。
因此,您的观点将 @model IPageViewModel<SomePageType>
而不仅仅是 @model SomePageType
。
在您的控制器中,您将 return View(new SomePageViewModel(currentPage))
而不是 return View(currentPage)
。
同样的原则适用于其他内容类型(块、媒体等)。
除了 SetDefaultValues
.
等特定方法外,我会远离内容类型本身的逻辑
在您的特定情况下,听起来也许您应该将内容列表作为 属性 添加到最初传递的视图模型实例中,然后在视图中枚举 属性 以呈现每个项目使用局部视图?
编辑: 我认为界面非常适合 "grouping" 内容类型,例如获取所有 IArticle
页面,而不管确切的内容类型。我通常将用于检索内容集合(例如 all article pages
)的逻辑放在存储库 类 或控制器操作方法中。当然这样的逻辑除了可以通过接口过滤,还可以反映属性。
我有一个实例,我在我的模型上使用一个接口来过滤我的块和页面以获取列表(即 select 所有块或页面 "IMyInterface"),但是随之而来的是转换为另一种显示类型的要求(即列出所有 blocks/pages,然后对于每个 block/page,转换为 "MyDisplayType" 并传递给局部视图)
我的问题:是否不鼓励我的 EPiServer 页面和块(我的模型)中的逻辑?
编辑以回应@Ted: PageViewModel 上的一个属性不起作用,属性 == "include me","act of inclusion" 有其他功能(这就是我所说的过滤的意思),因为我的模型上有一个接口,这很自然对我来说也有与模型中的属性相关联的逻辑(因为属性在模型上)。如果我的 class 中没有具有属性的逻辑,那么我需要一个 "helper class" 来托管我认为最好留在模型中的代码。
也许我误解了这个问题,但我会说更常见的方法是拥有特定的视图模型类型。
因此,您的观点将 @model IPageViewModel<SomePageType>
而不仅仅是 @model SomePageType
。
在您的控制器中,您将 return View(new SomePageViewModel(currentPage))
而不是 return View(currentPage)
。
同样的原则适用于其他内容类型(块、媒体等)。
除了 SetDefaultValues
.
在您的特定情况下,听起来也许您应该将内容列表作为 属性 添加到最初传递的视图模型实例中,然后在视图中枚举 属性 以呈现每个项目使用局部视图?
编辑: 我认为界面非常适合 "grouping" 内容类型,例如获取所有 IArticle
页面,而不管确切的内容类型。我通常将用于检索内容集合(例如 all article pages
)的逻辑放在存储库 类 或控制器操作方法中。当然这样的逻辑除了可以通过接口过滤,还可以反映属性。