Я следовал этому руководству и придумал свою собственную смесь, чтобы использовать 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);