代码循环内的 CMSEditableRegion
CMSEditableRegion inside a code loop
我正在尝试将 cmseditableregion 添加到存在于选项卡内容内部的 Kentico webpart,现在选项卡的数量是灵活的,所以我想动态生成它。我已经尝试了后面的方法 (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 个可编辑区域,但它甚至不能只使用一个。
我建议您创建一个临时的 PageType(在 Kentico 7 中称为 DocumentType),您可以在其中放置所需的 HTML 文本。然后,您可以使用 Repeater Web 部件或 ASP.NET 转发器显示它,如果您像我一样喜欢使用代码。
动态添加控件如下:
// 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。
我正在尝试将 cmseditableregion 添加到存在于选项卡内容内部的 Kentico webpart,现在选项卡的数量是灵活的,所以我想动态生成它。我已经尝试了后面的方法 (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 个可编辑区域,但它甚至不能只使用一个。
我建议您创建一个临时的 PageType(在 Kentico 7 中称为 DocumentType),您可以在其中放置所需的 HTML 文本。然后,您可以使用 Repeater Web 部件或 ASP.NET 转发器显示它,如果您像我一样喜欢使用代码。
动态添加控件如下:
// 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。