在编辑器模板中选择CheckBoxFor和TextBoxFor

时间:2011-10-27 16:58:01

标签: asp.net-mvc-3 editortemplates

我有一个适用于多种数据类型的编辑器模板。其中大部分是由TextBoxFor显示的,但我想在布尔值上使用CheckBoxFor(这些不可为空)。就像现在一样:

if (data.DataTypeName == "Boolean")
{
    @Html.CheckBoxFor(m => m, new { @class = classData })
}
else
{
    @Html.TextBoxFor(m => m, new { @class = classData })
}

我在CheckBoxFor lambda中出错:无法将类型'object'隐式转换为'bool'。存在显式转换(您是否错过了演员?)。如果我尝试演员,我会得到一个例外:ASP.net MVC CheckBoxFor casting error。但是,我无法使用该解决方案,因为我无法在此通用解决方案中使用模型成员。我是否必须放弃梦想?

1 个答案:

答案 0 :(得分:2)

所以你的属性是对象类型,你需要在运行时确定该类型的编辑器?如果是这种情况,请不要使用* For方法并显式转换并传递值:

if (data.DataTypeName == "Boolean")
{
    @Html.CheckBox("", (bool)Model, new { @class = classData })
} 
else
{
    @Html.TextBox("", (string)Model, new { @class = classData })
}