我有一个适用于多种数据类型的编辑器模板。其中大部分是由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。但是,我无法使用该解决方案,因为我无法在此通用解决方案中使用模型成员。我是否必须放弃梦想?
答案 0 :(得分:2)
所以你的属性是对象类型,你需要在运行时确定该类型的编辑器?如果是这种情况,请不要使用* For方法并显式转换并传递值:
if (data.DataTypeName == "Boolean")
{
@Html.CheckBox("", (bool)Model, new { @class = classData })
}
else
{
@Html.TextBox("", (string)Model, new { @class = classData })
}