我有一个分配了“参数模板”的子布局。在参数模板中,有一些字段,如单文本,富文本和检查列表类型。在代码隐藏中调用单个和富文本字段时没有问题。但是,我不知道如何在检查列表字段中调用列表。
添加子布局时,我只想获取所选项目的信息。
答案 0 :(得分:2)
首先在参数模板上阅读
然后设置一个基类来处理数据源和参数模板是很有用的。您可以根据此编写自己的基类:
https://marketplace.sitecore.net/en/Modules/Sub_Layout_Parameter_Helper.aspx
当你从子布局访问参数值时,它们将是原始值,在你的情况下是管道分隔的guid。
这是获取参数值的方法:
var sublayout = this.Parent as Sublayout;
var parameters = sublayout.Parameters;
var collection = WebUtil.ParseUrlParameters(parameters);
string images = collection["Images"];
变量图像将包含guids - 您必须在这些上使用Getitem()来检索通过拆分字符串选择的实际项目,如下所示:
var selectedItems = images.split('|');
List<Item> result = new List<Item>();
foreach (var itemId in selectedItems)
{
Guid id = Guid.Empty;
if (Guid.TryParse(itemId, out id))
{
var found = db.GetItem(new ID(id));
if (found != null)
{
result.Add(found);
}
}
}
上面的列表现在将在子布局中指定所选项目
答案 1 :(得分:0)
我相信,Checklist字段类型只会存储所选项目信息。
您可以将字段强制转换为MultilistField,然后在其上调用GetItems()。这应该会返回所选项目的列表。