【问题标题】:Choosing between CheckBoxFor and TextBoxFor in Editor Template在编辑器模板中选择 CheckBoxFor 和 TextBoxFor
【发布时间】:2023-03-25 22:29:01
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc-3 editortemplates


    【解决方案1】:

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

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

    【讨论】:

    • 这非常容易。谢谢
    猜你喜欢
    • 2012-01-11
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2011-08-22
    • 1970-01-01
    相关资源
    最近更新 更多