【发布时间】:2014-08-30 03:50:56
【问题描述】:
我正在使用 Umbraco 7,并且我创建了一个使用属性类型下拉列表发布键的数据类型。如何获取每个预值的 id?
提前致谢。
【问题讨论】:
标签: umbraco umbraco7 custom-data-type
我正在使用 Umbraco 7,并且我创建了一个使用属性类型下拉列表发布键的数据类型。如何获取每个预值的 id?
提前致谢。
【问题讨论】:
标签: umbraco umbraco7 custom-data-type
您可以在 Umbraco 帮助器上使用 DataTypeService
Umbraco.DataTypeService.GetPreValuesByDataTypeId()
【讨论】:
@foreach (var categoryPrevalue in ApplicationContext.Services.DataTypeService.GetPreValuesByDataTypeId(**-42**).ToList())
{
<li><a href="#">@categoryPrevalue</a></li>
}
"-42" 应该在 Umbraco 后台更改为您的 Datatypeid。
【讨论】:
类似这样的。
您需要参考:
@using umbraco.cms.businesslogic.datatype
然后从以下位置获取数据类型 ID:
var dataTypeId = umbraco.cms.businesslogic.datatype.DataTypeDefinition
.GetAll().First(d=> d.Text == "DataTypeName").Id;
var preValues = PreValues.GetPreValues(dataTypeId).Values;
var enumerator = preValues.GetEnumerator();
while (enumerator.MoveNext())
{
var preValueText = ((PreValue)enumerator.Current).Value;
<option>@preValueText</option>
}
【讨论】:
在 Umbraco 7.x 中,umbraco.cms.businesslogic.datatype.DataTypeDefinition 已弃用。
相反,我使用了以下内容。感谢@Kerpalito 一开始的回答,但我不想硬编码我的数据类型的 ID,因为它可以在环境之间改变。名称在所有环境中都相同。
public List<string> GetPrevalues()
{
List<string> toReturn = new List<string>();
IDataTypeDefinition dataType = ApplicationContext.Current.Services.DataTypeService.GetDataTypeDefinitionByName("My Data Type Name");
if (dataType == null)
{
return toReturn;
}
PreValueCollection preValues = ApplicationContext.Current.Services.DataTypeService.GetPreValuesCollectionByDataTypeId(dataType.Id);
if (preValues == null)
{
return toReturn;
}
IDictionary<string, PreValue> tempDictionary = preValues.FormatAsDictionary();
toReturn = tempDictionary.Select(p => p.Value.Value).ToList();
return toReturn;
}
【讨论】:
在 Umbraco 8 中,使用以下代码:
@{
var _dataTypeService = Services.DataTypeService;
var blogCategories = (DropDownFlexibleConfiguration)_dataTypeService.GetDataType(1142).Configuration;
foreach (var value in blogCategories.Items)
{
<option value="@value.Value">@value.Value</option>
}
}
【讨论】: