問題は、DBNull.Value
に割り当てることができないことint
です。あなたが持っている1つのオプションは、次のようなことをすることです:
int typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
default(int) :
Convert.ToInt32(ddlType.SelectedValue);
別のオプションは、使用することint?
です:
int? typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
他にもたくさんのオプションがあります。しかし、値を に取得しようとしていて、int
何かが選択されているかどうかを後で知りたい場合は、これら 2 つのオプションは非常に簡単です。最初のケースでは、後で比較して以前default(int)
かどうかを確認することで、それを推測できます。2 番目のケースでは、そうであるかどうかを確認するnull
ために言うことができるので、さらに簡単です。typeid.HasValue
null
ToString()
が の場合SelectedValue
は失敗するため、呼び出しを取りましたnull
。ただし、これが Web フォーム アプリケーションではなく Windows フォーム アプリケーションである場合 (これは私が推測したことです)、その値を次のような文字列に変換する必要があります。
var val = Convert.ToString(ddlType.SelectedValue);
int? typeid = string.IsNullOrEmpty(val) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
Convert.ToString
値が の場合、 は空の文字列を返すためですnull
。