0

私は以下を使用しています:

    public static SelectList GetOptions<T>(string value = null) where T : struct
    {
        var values = EnumUtilities.GetSpacedOptions<T>();
        var options = new SelectList(values, "Value", "Text", value);
        return options;
    }

    public static IEnumerable<SelectListItem> GetSpacedOptions<T>(bool zeroPad = false) where T : struct
    {
        var t = typeof(T);
        if (!t.IsEnum)
        {
            throw new ArgumentException("Not an enum type");
        }
        var numberFormat = zeroPad ? "D2" : "g";
        var options = Enum.GetValues(t).Cast<T>()
            .Select(x => new SelectListItem
            {
                Value = ((int) Enum.ToObject(t, x)).ToString(numberFormat),
                Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
            });
        return options;

私の列挙型には値があります:

public enum DefaultStatus {
    Release = 0,
    Review = 1,
    InProgress = 2,
    Concept = 3,
    None = 99
};

私が理解していることから、数値形式は「01」、「02」などの値を与えるはずですが、それは私に「1」、「2」、「3」を与えています。

私が間違っていることは明らかですか?

4

1 に答える 1

1

デフォルト値GetSpacedOptionsのオプションのパラメータがあります。zeroPadfalse

使用する

var values = EnumUtilities.GetSpacedOptions<T>(true);

それ以外の

var values = EnumUtilities.GetSpacedOptions<T>();
于 2013-02-08T13:23:15.447 に答える