代码循环中的CMSEditableRegion
本文关键字:CMSEditableRegion 循环 代码 | 更新日期: 2023-09-27 17:49:33
我试图添加一个cmseditable区域到我的Kentico web部件,存在于选项卡内容内部,现在选项卡的数量是灵活的,所以我想动态地生成这个。我已经尝试了下面的方法(stringbuilder),但它只是将其呈现为html,而不是传递给文字时的控件。
for (int i = 1; i <= TabCount; i++)
{
sb.AppendLine("<li class='"htab-list__item--fininfo active'">");
sb.AppendLine("<a href='"#financial-result'" class='"htab-list__link tab-link'">");
sb.AppendLine("<cms:CMSEditableRegion runat='"server'" id='"ttl" + i.ToString() + "'" RegionType='"Textbox'" RegionTitle='"" + i.ToString() + " Title'" />");
sb.AppendLine("</li>");
是否有办法使CMSEditableRegion能够在代码中动态设置,以便当循环构建页面代码时,它将在正确的位置作为控件,而不仅仅是html。
完整的代码有更多的html和每个循环3个可编辑的区域,但它甚至不能只用一个。
动态添加控件的操作如下:
// Let's assume that 'plc' is a placeholder. But it can be any control.
plc.Controls.Add(new LiteralControl("<li class='"htab-list__item--fininfo active'">"));
plc.Controls.Add(new LiteralControl("<a href='"#financial-result'" class='"htab-list__link tab-link'">"));
plc.Controls.Add(new CMSEditableRegion { ID = "someid", RegionType = CMSEditableRegionTypeEnum.TextBox, RegionTitle = "sometitle" });
plc.Controls.Add(new LiteralControl("</li>"));
也可以查看MSDN
我建议您创建一个特别的PageType(在Kentico 7中称为DocumentType),您可以在其中放置所需的HTML文本。然后,您可以使用Repeater web部件或ASP来显示它。. NET中继器,如果你像我一样,喜欢在代码中工作。