EPiServer:使用数组中的内容填充selectionfactory下拉列表?

问题描述 投票:0回答:2

我有一个名为culture的变量,其中包含所有文化代码的长列表,例如:

  • EN-US
  • EN-GB
  • 在-AU
  • 的-D E
  • 等等

我想创建一个下拉列表,其中包含用这些代码填充的文本和值。

这是我到目前为止所提出的,但它不起作用,即我的下拉HrefLangName不包含任何条目。

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using EPiServer.Core;
using EPiServer.DataAbstraction;
using EPiServer.DataAnnotations;
using EPiServer.Shell.ObjectEditing;

namespace Site.Models.Blocks
{
    [ContentType(GUID = "1ffec6b3-06a3-4fbd-b541-7d02e8302811")]
    public class HrefLangBlock : BlockData
    {

        [Display(Order = 1)]
        [SelectOne(SelectionFactoryType = typeof(HrefLangSelectionFactory))]
        public virtual string HrefLangName { get; set; }

        [Display(Order = 1)]
        public virtual string HrefLangLink { get; set; }

    }

    public class HrefLangSelectionFactory : ISelectionFactory
    {
        public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
        {

            CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

            var list = new List<ISelectItem>();

            foreach (var culturecode in cultures)
            {
                new SelectItem()
                {
                    Text = culturecode.ToString(),
                    Value = culturecode
                };
            }

            return list;
        }
    }
}
c# episerver
2个回答
4
投票

为什么不使用Linq?

public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
{
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
    return cultures.Select(x => new SelectItem() { Text = culturecode.ToString(), Value = culturecode });
}

0
投票

我设法通过重写我的foreach循环来解决它,而不是包含以下内容:

foreach (var culturecode in cultures)
            {

                list.Add(new SelectItem()
                {
                    Text = culturecode.ToString(),
                    Value = culturecode
                });
            }
© www.soinside.com 2019 - 2024. All rights reserved.