2014-08-30 59 views

回答

5

东西这个。

您需要参考:

@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> 
} 
3

您可以使用DataTypeService上一把umbraco帮手

Umbraco.DataTypeService.GetPreValuesByDataTypeId()

0
@foreach (var categoryPrevalue in ApplicationContext.Services.DataTypeService.GetPreValuesByDataTypeId(**-42**).ToList()) 

     { 
     <li><a href="#">@categoryPrevalue</a></li> 
     } 

“-42”应该在Umbraco后台中更改为您的Datatypeid。

2

在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; 
}