Как я могу создать HTML .CheckBoxFor () работает со строковым полем?

Я использую ASP.NET MVC3 с Razor и C #. Я делаю своего рода конструктор форм, поэтому у меня есть модель, которая содержит коллекцию следующих объектов:

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

MyFormType - это просто перечисление, которое сообщает мне, является ли поле формы флажком, текстовым полем, загрузкой файла или что бы ни. Мой шаблон редактора выглядит примерно так (см. Комментарий):

~ / 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!
    }
}

Я попытался привести / преобразовать m.Value в логическое значение в лямбда-выражении для CheckBoxFor (), но это вызвало ошибку. Я бы просто вручную создал поле ввода флажка, но CheckBoxFor (), похоже, выполняет две вещи, которые я не могу воспроизвести:

  1. Создает скрытый ввод, который каким-то образом заполняется флажком. Похоже, это то, что подхватывает связыватель модели.
  2. Создает имя из объекта, так что связыватель модели получает значение в правильное свойство.

Кто-нибудь знает способ использования CheckBoxFor () в строке, или способ воспроизвести его функциональность вручную, чтобы я мог выполнить эту работу?

12
задан jrizzo 25 August 2011 в 19:06
поделиться