Monorail Sélectionnez Utiliser Enum
-
29-09-2019 - |
Question
J'ai ce guide et à venir avec ma propre concoction afin d'utiliser le FormHelper.Select
de monorail qui est généré à partir d'un ENUM. Voici donc la syntaxe Brail:
${FormHelper.Select("user.Role", ${LS.EnumToPairs(Roles)}, {"value":"First", "text":"Second"})}
« LS » est juste mon propre aide, que je l'ai défini comme suit:
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;
}
Et pourtant de cela, en dépit d'être la syntaxe correcte, je reçois l'erreur suivante:
Noeud '$ ({return Castle.MonoRail.Views.Brail.ExpandDuckTypedExpressions_WorkaroundForDuplicateVirtualMethods.Invoke (self.GetParameter (' LS '), 'EnumToPairs', (self.GetParameter (' rôles '),))})' a pas été correctement
L'erreur source ne nous aide pas beaucoup, malheureusement:
Ligne 15: Sortie FormHelper.TextField ( "user.Role", { "class": "text-input-largeur"}) Ligne 16: sortie « » » Ligne 17: "" » Ligne 18: FormHelper.Select de sortie ( "user.Role", $ {LS.EnumToPairs (rôles)}, { "valeur": "d'abord", "texte": "Second"}) Ligne 19: sortie "" "
Toutes les idées ce que je fais mal ici?
EDIT
D'après la réponse donnée ci-dessous, la solution a finalement ceci:
${FormHelper.Select("user.Role", LS.EnumToPairs(Roles), {"value":"First","text":"Second"})}
où les rôles était PropertyBag["Roles"] = typeof(Role);
La solution
Essayez ceci:
${FormHelper.Select("user.Role", LS.EnumToPairs(typeof(Roles)), {"value":"First", "text":"Second"})}