【问题标题】:Umbraco get PreValues in a data typeUmbraco 获取数据类型中的 PreValues
【发布时间】:2014-08-30 03:50:56
【问题描述】:

我正在使用 Umbraco 7,并且我创建了一个使用属性类型下拉列表发布键的数据类型。如何获取每个预值的 id?

提前致谢。

【问题讨论】:

    标签: umbraco umbraco7 custom-data-type


    【解决方案1】:

    您可以在 Umbraco 帮助器上使用 DataTypeService

    Umbraco.DataTypeService.GetPreValuesByDataTypeId()

    【讨论】:

      【解决方案2】:
         @foreach (var categoryPrevalue in ApplicationContext.Services.DataTypeService.GetPreValuesByDataTypeId(**-42**).ToList())
      
            {
              <li><a href="#">@categoryPrevalue</a></li>
            }
      

      "-42" 应该在 Umbraco 后台更改为您的 Datatypeid。

      【讨论】:

        【解决方案3】:

        类似这样的。

        您需要参考:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 2016-02-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-06-20
              • 1970-01-01
              相关资源
              最近更新 更多