Comment puis-je faire Html.CheckBoxFor() le travail sur une chaîne de caractères?

Je suis en utilisant ASP.NET MVC3 avec Rasoir et C#. Je fais un générateur de formulaire de toutes sortes, j'ai donc un modèle qui dispose d'une collection de l'objet suivant:

public class MyFormField
{
    public string Name { get; set; }
    public string Value { get; set; }
    public MyFormType Type { get; set; }
}

MyFormType est juste un enum qui me dit que si le champ de formulaire est une case à cocher, ou zone de texte, ou un téléchargement de fichier, ou quoi que ce soit. Mon éditeur de modèle ressemble à quelque chose comme ceci (voir le commentaire):

~/Views/EditorTemplates/MyFormField.cshtml

@model MyFormField
@{
    switch (Model.Type)
    {
        case MyFormType.Textbox:
            @Html.TextBoxFor(m => m.Value)
        case MyFormType.Checkbox:
            @Html.CheckBoxFor(m => m.Value)  //This does not work!
    }
}

J'ai essayé de coulée/conversion de la m.Value à un bool dans l'expression lambda pour CheckBoxFor(), mais qui a jeté une erreur. Je voudrais juste manuellement construire une case de saisie, mais CheckBoxFor() semble faire deux choses que je n'arrive pas à répliquer:

  1. Crée un caché d'entrée qui en quelque sorte est renseigné par la case. Cela semble être ce que le modèle de classeur ramasse.
  2. Génère la forme du nom de l'objet, de sorte que le modèle de classeur obtient la valeur dans le droit de propriété.

Quelqu'un sait-il un moyen de contourner à l'aide de CheckBoxFor() sur une chaîne, ou une façon de répliquer à ses fonctionnalités manuellement, de sorte que je peux faire ce travail?

OriginalL'auteur jrizzo | 2011-08-25