MonoRail Выбрать с помощью Enum

Я следовал этому руководству и придумал свою собственную смесь, чтобы использовать MonoRail FormHelper.Select это генерируется из перечисления. Итак, вот синтаксис Брайля:

${FormHelper.Select("user.Role", ${LS.EnumToPairs(Roles)}, {"value":"First", "text":"Second"})}

"LS" - это просто мой собственный помощник, который я определил следующим образом:

public IEnumerable<Pair<int, string>> EnumToPairs(Type e)
{
    IList<Pair<int, string>> pairs = new List<Pair<int, string>>();

    foreach (int val in Enum.GetValues(e))
        pairs.Add(new Pair<int, string>(val, Enum.GetName(e, val)));

    return pairs;
}

Тем не менее, несмотря на правильный синтаксис, я получаю следующую ошибку:

Узел '$({ return Castle.MonoRail.Views.Brail.ExpandDuckTypedExpressions_WorkaroundForDuplicateVirtualMethods.Invoke(self.GetParameter('LS'), 'EnumToPairs', (self.GetParameter('Roles'),)) }) не имеет

Ошибка источника не очень помогает, к сожалению:

Строка 15: выходные данные FormHelper.TextField("user.Role", {"class":"text-input full-width"}) Строка 16: выходные данные "" "Строка 17: """ Строка 18: выходные данные FormHelper.Select("user.Role", ${LS.EnumToPairs(Roles)}, {"value":"First", "text":"Second"}) Строка 19: вывод "" "

Есть идеи, что я здесь делаю не так?

РЕДАКТИРОВАТЬ

Основываясь на ответе, приведенном ниже, решение было, наконец, таким:

${FormHelper.Select("user.Role", LS.EnumToPairs(Roles), {"value":"First","text":"Second"})}

Где Роли были PropertyBag["Roles"] = typeof(Role);

1 ответ

Решение

Попробуй это:

${FormHelper.Select("user.Role", LS.EnumToPairs(typeof(Roles)), {"value":"First", "text":"Second"})}
Другие вопросы по тегам