2SXC 10.25.2 DNN 9.3.2
我有一个使用C#模板的2Sxc模块,启用了 "list"。我有一个名为 "pathway "的内容类型,在该类型中,我有两个实体选择器字段,分别用于 "第一步会话 "和 "下一步会话"。这些实体选择器使用 "会话 "内容类型。在每个 "session "内容类型中,我还有一个 "peaker(s) "的实体选取器。总而言之,这是我在列表中设置列表的设置。
当我为每个子列表创建循环时,我可以很容易地在1个C#模板中完成,但它变得重复、冗长和不规则,因为有这么多的C#代码,我为不同的实体选择器部分循环相同的会话模板。所以,我尝试使用 "渲染子模板 "代码来简化模板--我创建了新的子模板,并将它们插入其中--一开始似乎很有效,然而,模板开始将所有 "会话 "项目输出到列表中的每个项目中。
我怀疑子模板以某种方式失去了它所在项目的上下文,所以它在输出所有的东西。在使用for each循环的子模板时,我是否需要知道一些特别的事情?我是否必须包含params,如果是,我该怎么做?
是的,你可以直接使用 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。