嘿伙计们,我数据库中的一个表有一个字段“描述”,允许'Nulls'。这在ASP.NET中呈现页面时会出现问题,因为我想确保我将字符串解码为数据库中的字符串,因为我正在编写它。当然,描述中有一些NULL。我希望保留这一领域。
所以我的ASP.NET页面有这个代码
<asp:TextBox ID="DescInfo" Text='<%# HttpUtility.HtmlDecode((string)Eval("Description")) %>' />
所以当我渲染页面时,我会得到:
Unable to cast object of type 'System.DBNull' to type 'System.String'.
我看待它的方式,我有两个选择:
OR
任何人都有更好的想法吗?
答案 0 :(得分:5)
虽然DBNull
无法转换为字符串,但它确实有ToString()
方法返回空字符串。我可能会这样做:
<%# HttpUtility.HtmlDecode(Eval("Description").ToString()) %>
这样您就不必测试DBNull
或其他任何内容。 String.ToString()
只返回字符串,DBNull.ToString()
返回一个空字符串。这样做的好处是每行只调用一次Eval
而不是两次。如果您的数据同时包含null
和DBNull
(您无法在null
上调用ToString,但您可以在DBNull
上),那么唯一可能让您失望的是我在这种情况下,不要认为这实际上是可能的。
答案 1 :(得分:1)
您可以将(字符串)Eval(“Description”)替换为:
(Eval("Description") is System.DBNull) ? String.Empty : Eval("Description")
答案 2 :(得分:1)
答案 3 :(得分:0)
这样的事情应该有效。我没有为你测试过。
<%# HttpUtility.HtmlDecode(Eval("Description") == System.DBNull ? String.Empty : (string(Eval("Description")) %>