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

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


person Kezzer    schedule 19.08.2010    source источник


Ответы (1)


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

${FormHelper.Select("user.Role", LS.EnumToPairs(typeof(Roles)), {"value":"First", "text":"Second"})}
person Mauricio Scheffer    schedule 19.08.2010
comment
Это было очень близко, но это не позволило мне сделать typeof(Role) (это фактический тип перечисления) или typeof(Roles), если Roles был в PropertyBag, как я показал в моем коде. Вместо этого я сделал LS.EnumToPairs(Roles) там, где было PropertyBag["Roles"] = typeof(Role); - не спрашивайте меня, почему это не позволяет мне, потому что роль даже не находится в пространстве имен. Однако ваша идея привела к решению. - person Kezzer; 19.08.2010
comment
@Kezzer: правильно, вам нужно поместить полное пространство имен Role и убедиться, что у него есть правильная ссылка на сборку. - person Mauricio Scheffer; 19.08.2010
comment
Действительно, но Role никогда не находился в пространстве имен, поэтому я не был уверен, что происходит в этом случае. Я пробовал Project.Role при импорте безуспешно. Не уверен, что там происходило на самом деле. - person Kezzer; 19.08.2010