如何处理从"DBNull"类型到"String"类型的转换无效

8 asp.net dbnull

我需要一些关于如何处理以下内容的建议: - 我有一个数据字段misc_text_2,其类型为varchar(25)并允许NULL.现在,如果我使用以下语法

<asp:Label ID="lblPrinter" runat="server"  Text='<%# iif(eval("misc_text_2") is dbnull.value, "", iif(eval("misc_text_2") like "NA", "None", iif(eval("misc_text_2") like "KP1", "Kitchen Printer 1", iif(eval("misc_text_2") like "KP2", "Kitchen Printer 2", iif(eval("misc_text_2") like "KP3", "Kitchen Printer 3", iif(eval("misc_text_2") like "BP1", "Bar Printer 1", iif(eval("misc_text_2") like "BP2", "Bar Printer 2", iif(eval("misc_text_2") like "BP3", "Bar Printer 3", Eval("misc_text_2")))))))))%>'></asp:Label>
Run Code Online (Sandbox Code Playgroud)

我一直在收到错误异常详细信息:System.InvalidCastException:从类型'DBNull'到类型'String'的转换无效.

我知道我错过了什么,但是......

提前致谢

ang*_*son 13

您必须DBNull.Value自己明确检查并进行转换.

换句话说,构建一个方法,为您进行转换,同时考虑DBNull.Value到.


San*_*nen -1

您可以在 sql 查询中使用 isNull(misc_text_2, '') 返回空字符串而不是 DBNull。

  • 切勿返回空字符串来代替空值,这会降低数据集的可移植性,并且会歪曲数据模型。如果它是一个空值,那么它就是一个空值。让UI层去关心如何显示。 (16认同)
  • “空与空不同”。这不是意见,而是事实。 (6认同)