ASP.NET内联表达式中的DBNull到String具有转换错误

Tom*_*icz 2 asp.net string dbnull casting

嘿伙计们,我数据库中的一个表有一个字段"描述",允许'Nulls'.这在ASP.NET中呈现页面时会出现问题,因为我想确保我将字符串解码为数据库中的字符串,因为我正在编写它.当然,描述中有一些NULL.我希望保留的字段.

所以我的ASP.NET页面有这个代码

<asp:TextBox ID="DescInfo" Text='<%# HttpUtility.HtmlDecode((string)Eval("Description")) %>' />
Run Code Online (Sandbox Code Playgroud)

所以当我渲染页面时,我会得到:

Unable to cast object of type 'System.DBNull' to type 'System.String'.
Run Code Online (Sandbox Code Playgroud)

我看待它的方式,我有两个选择:

  • 在加载期间绑定

要么

  • 使表成为非NULL表并使用空值

任何人都有更好的想法吗?

Joe*_*ler 5

虽然DBNull无法强制转换为字符串,但它确实有一个ToString()返回空字符串的方法.我可能会这样做:

<%# HttpUtility.HtmlDecode(Eval("Description").ToString()) %>
Run Code Online (Sandbox Code Playgroud)

这样你就不必测试DBNull或任何东西.String.ToString()只返回字符串,并DBNull.ToString()返回一个空字符串.这也具有仅Eval每行调用一次而不是两次的优点.唯一可能让你失望的是你的数据包含nullDBNull(你不能调用ToString,null但你可以开启DBNull),但我不认为在这种情况下实际上是可行的.