我需要四捨五入並打印如下所示的價格,但是這不處理空值。
如何處理一行代碼中的空值?
DBRSet是一個SQLDataReader和價格是錢鍵入SQL。從數據庫中處理null
<%= Math.Round(DBRSet("price"))%>
我有大約200 .aspx頁的這個,所以我也可以使用如何在一個簡單的方法改變這些有什麼祕訣?我可以做一個搜索和替換一個reg-exp或類似的東西嗎?
我需要四捨五入並打印如下所示的價格,但是這不處理空值。
如何處理一行代碼中的空值?
DBRSet是一個SQLDataReader和價格是錢鍵入SQL。從數據庫中處理null
<%= Math.Round(DBRSet("price"))%>
我有大約200 .aspx頁的這個,所以我也可以使用如何在一個簡單的方法改變這些有什麼祕訣?我可以做一個搜索和替換一個reg-exp或類似的東西嗎?
你必須明確地處理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
?),並在更換之前手動檢查它。
如果你不想改變aspx的,但可以很容易地改變DBRSet
屬性的定義,你可以在那裏放置一個包裝器來覆蓋SqlDataReader
並實現你自己的索引器,它會首先檢查null並進入內部dataReader
獲得值如果不爲空。
當你像方法調用一樣使用它時,'DBRSet'如何成爲'SQLDataReader'? – 2011-03-30 12:26:36
也許它是VB.Net? – Snowbear 2011-03-30 12:28:41
或者它是VB.NET嗎?在那種情況下,你不需要轉換爲「小數」嗎? DataReader索引器返回'object'。 – 2011-03-30 12:30:02