Я следил за этим руководством и скоро с моей собственной смесью, чтобы использовать 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: вывод "" "
Есть идеи, что я здесь делаю не так?
ИЗМЕНИТЬ
Основываясь на ответе, приведенном ниже, окончательное решение было таким:
${FormHelper.Select("user.Role", LS.EnumToPairs(Roles), {"value":"First","text":"Second"})}
Где Роли были PropertyBag["Roles"] = typeof(Role);