1

いくつかのデータ型に適用されるエディターテンプレートがあります。それらのほとんどはTextBoxForによって表示されますが、ブール値でCheckBoxForを使用したいと思います(これらはnull許容ではありません)。現在のように:

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

CheckBoxForラムダでエラーが発生します:タイプ'object'を'bool'に暗黙的に変換できません。明示的な変換が存在します(キャストがありませんか?)。キャストを試してみると、次のような例外が発生します:ASP.netMVCCheckBoxForキャストエラー。ただし、この一般化されたソリューションではモデルメンバーを使用できないため、そのソリューションは使用できません。私は夢をあきらめなければならないのでしょうか?

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 に答える