我正在使用带有 Razor 和 C# 的 ASP.NET MVC3。我正在制作各种表单构建器,所以我有一个模型,其中包含以下对象的集合:
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!
}
}
我尝试将 CheckBoxFor() 的 lambda 表达式中的转换/转换m.Value
为布尔值,但这引发了错误。我只是手动构造一个复选框输入,但 CheckBoxFor() 似乎做了两件我似乎无法复制的事情:
- 创建一个隐藏的输入,该输入以某种方式被复选框填充。这似乎是模型活页夹拾取的内容。
- 从对象生成名称,以便模型绑定器将值获取到正确的属性中。
有谁知道在字符串上使用 CheckBoxFor() 的方法,或者手动复制其功能的方法,以便我可以完成这项工作?