私はチェックボックスが必要ですが、基礎となるデータはデータベースにsmallint型です。そのデータ型で@ Html.Checkboxを作成する方法がわかりません。MVC - @ Html.CheckBoxFor
タイプ「short?」を暗黙的に変換できません。 「ブール」
にここで私が持っているコードされています
@Html.CheckBoxFor(model => model.HasCycle)
私はチェックボックスが必要ですが、基礎となるデータはデータベースにsmallint型です。そのデータ型で@ Html.Checkboxを作成する方法がわかりません。MVC - @ Html.CheckBoxFor
タイプ「short?」を暗黙的に変換できません。 「ブール」
にここで私が持っているコードされています
@Html.CheckBoxFor(model => model.HasCycle)
ブール値をデータベースに格納する場合は、DBタイプのビット'smallintの代わりに(ここで0はfalse、1は真となります)。
それ以外の場合は、まずmodel.HasCycleをboolに変換する必要があります。また、タイプが短いので? (null値)の場合は、null値も処理する必要があります。おそらく、モデル自体でこれを処理し、HasCycleを短いものではなくboolとしてモデルから公開する必要があります。それでも、あなたは前後にいくつかの問題にぶつかることがあります。正しい方法は、データベースタイプを変更することです。
短く変換するには?あなたは次のようなことをすることができます:
bool hasCycleBool = false; //if HasCycle is null, this will remain false
if(model.HasCycle != null)
{
hasCycleBool = Convert.ToBoolean(model.HasCycle);
}
チェックボックスは、真または偽を意味し、ブール値です。 true/false(1,0)を期待しているのであれば、おそらくデータベースタイプをboolに設定するべきです。これをしたくない場合は、int値をbool(1,0)に変換する必要があります
私はあなたと同じ問題を抱えていました。私たちはデータベースのブール値をマップするためにsmallintを使用しています。変更することはできません。
私は既存のデータベースに基づいて新しいASP.NET MVCアプリケーションを開発しているので、この問題に対処しなければなりません。
私が採用した解決策は、マップされた(smallint/short)プロパティから変換するためのマップされていないブール値プロパティを作成することでした。次のように:
public short AllowMailing { get; set; }
[NotMapped]
public bool AllowMailingBool
{
get { return AllowMailing == 1? true : false; }
set { AllowMailing = value ? (short)1 : (short)0; }
}
うまくいきます。