我在 umbraco 中有一个属性,它使用带有一组预值的下拉数据类型,您可以从中进行选择。
如何检索此下拉列表中所有可能的预值的列表?
umbraco.library 中有一个辅助方法可以做到这一点。
来自 xslt:
<xsl:variable name="prevalues" select="umbraco.library:GetPreValues(1234)" />
从代码:
using umbraco;
XPathNodeIterator prevalues = library.GetPrevalues(1234);
将 1234 替换为您的数据类型的 id(将鼠标悬停在开发人员部分的数据类型上时,您可以在浏览器底部看到它)
问候
杰斯珀豪格
这是我在我的 Umbraco 数据类型之一中使用的代码,用于获取包含所有可能预值的 DropDownList:
var prevalues = PreValues.GetPreValues(dataTypeDefinitionId);
DropDownList ddl = new DropDownList();
if (prevalues.Count > 0)
{
for (int i = 0; i < prevalues.Count; i++)
{
var prevalue = (PreValue)prevalues[i];
if (!String.IsNullOrEmpty(prevalue.Value))
{
ddl.Items.Add(new ListItem(prevalue.Value, prevalue.DataTypeId.ToString()));
}
}
}
将 dataTypeDefinitionId 替换为您的数据类型的 id。
我知道这是一个老问题,但我根据此答案中提供的信息创建了此方法,我认为值得记录:
public static class UmbracoExtensions
{
public static IEnumerable<string> GetDropDownDataTypeValues(int dataTypeId)
{
var dataTypeValues = umbraco.library.GetPreValues(dataTypeId);
var dataTypeValuesEnumerator = dataTypeValues.GetEnumerator();
while (dataTypeValues.MoveNext())
{
dynamic dataTypeItem = dataTypeValues.Current;
yield return dataTypeItem.Value;
}
}
}