Я использую ASP.NET MVC3 с Razor и С#. Я создаю компоновщик форм, поэтому у меня есть модель, у которой есть коллекция следующего объекта:
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
в bool в выражении лямбда для CheckBoxFor(), но это заставило ошибку. Я просто вручную создаю флажок, но CheckBoxFor(), похоже, выполняет две вещи, которые, как я могу, не реплицируются:
- Создает скрытый ввод, который каким-то образом заполняется флажком. Похоже, это то, что подбирает модельное связующее.
- Генерирует имя формы для объекта, чтобы привязка к модели вносила значение в правильное свойство.
Кто-нибудь знает способ использования CheckBoxFor() в строке или способ репликации ее функций вручную, чтобы я мог сделать эту работу?