1

我有一个适用于多种数据类型的编辑器模板。它们中的大多数由 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 cast error。但是,我不能使用那个解决方案,因为我不能在这个通用解决方案上使用模型成员。我要放弃梦想吗?

4

1 回答 1

2

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

if (data.DataTypeName == "Boolean")
{
    @Html.CheckBox("", (bool)Model, new { @class = classData })
} 
else
{
    @Html.TextBox("", (string)Model, new { @class = classData })
}
于 2011-10-27T17:02:52.780 回答