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

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

0 голосов
/ 19 августа 2010

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

${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: вывод "" "

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

EDIT

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

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

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

1 Ответ

0 голосов
/ 19 августа 2010

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

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