如何在使用列表的内容模块中的C#模板中使用Render子模板?

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

2SXC 10.25.2 DNN 9.3.2

我有一个使用C#模板的2Sxc模块,启用了 "list"。我有一个名为 "pathway "的内容类型,在该类型中,我有两个实体选择器字段,分别用于 "第一步会话 "和 "下一步会话"。这些实体选择器使用 "会话 "内容类型。在每个 "session "内容类型中,我还有一个 "peaker(s) "的实体选取器。总而言之,这是我在列表中设置列表的设置。

当我为每个子列表创建循环时,我可以很容易地在1个C#模板中完成,但它变得重复、冗长和不规则,因为有这么多的C#代码,我为不同的实体选择器部分循环相同的会话模板。所以,我尝试使用 "渲染子模板 "代码来简化模板--我创建了新的子模板,并将它们插入其中--一开始似乎很有效,然而,模板开始将所有 "会话 "项目输出到列表中的每个项目中。

我怀疑子模板以某种方式失去了它所在项目的上下文,所以它在输出所有的东西。在使用for each循环的子模板时,我是否需要知道一些特别的事情?我是否必须包含params,如果是,我该怎么做?

razor dotnetnuke 2sxc
1个回答
1
投票

是的,你可以直接使用 RenderPage 没有参数,或者像在博客应用中那样传递参数。

@RenderPage("shared/_Category Filter.cshtml", new { MobileView = true, FilteredCategory = filteredCategory })

参见 https:/github.com2sicapp-blogblobmaster_List.cshtml#L25。

然后,模板可以检索到这样的值。

@{
  var filteredCategory = PageData["FilteredCategory"];
}

请看 https:/github.com2sicapp-blogblobmastershared_Category%20Filter.cshtml#L6。

你可以像这样传递任意数量的 valuesobjects。

你也可以创建辅助程序--然后调用这些辅助程序。就像这样,你还可以创建助手--然后调用这些助手。

https:/github.com2sicapp-newsblobmastershared_Helpers.cshtml#L24-L33。

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