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