我需要舍入并打印如下价格,但这不会处理空值
如何在一行代码上处理空值?
DBRSet是一个 SQLDataReader ,价格是SQL中的 money 类型。
<%= Math.Round(DBRSet("price"))%>
我有大约200个.aspx页面,所以我也可以使用一些提示,如何以一种简单的方式更改这些?我可以搜索并替换reg-exp或类似的内容吗?
答案 0 :(得分:2)
您必须明确处理DbNull
案例,例如:
<%= DbNull.Equals(DBRSet["price"]) ? "null" : Math.Round(DBRSet["price"]).ToString() %>
这很笨重,所以在某个地方有一个这样的辅助方法是有道理的:
static class FormatDbValue {
public static string Money(object value)
{
if (DbNull.Equals(value)) {
return "0";
}
return Math.Round((decimal)value);
}
}
哪会允许
<%= FormatDbValue.Money(DBRSet["price"]) %>
当然,查找和更改所有此类代码以使用帮助程序方法将是......令人不快的。我会通过搜索整个项目(可能在项目的较小块中)来搜索指示(可能是Math.Round
?)并在替换之前手动查看。
答案 1 :(得分:0)
如果您不想更改aspx,但可以轻松更改DBRSet
属性的定义,可以在SqlDataReader
上放置一个包装器并实现自己的索引器检查null并进入内部dataReader
以获取值,如果不为null。