﻿# 以 Convert.ToString(Eval("ID")) 取代 Eval("ID").ToString()

在 ASP.NET 頁面套版時，我常看到有工程師是這樣套版的：

```
<a href="<%# Server.UrlPathEncode(Eval("Attachment").ToString()) %>">XXXX</a>
```

看出問題了嗎？

是的，當 Attachment 這個欄位的內容是 null 的時候，這裡就會發生例外狀況(Exception)，所以這樣的寫法一旦養成習慣，那就等著常常被電啦！

我認為比較好的方式應該是改用以下的寫法：

```
<a href="<%# Server.UrlPathEncode(Convert.ToString(Eval("Attachment"))) %>">XXXX</a>
```

其實只是換個角度來想而已！原本是把 Eval("Attachment") 當成「主角」來看待，讓這位物件的主角呼叫 ToString() 回應字串；現在改變成「配角」，將 Eval("Attachment") 變成參數傳入 Convert 類別提供的 ToString() 方法，如果傳入的 Eval("Attachment") 是 null 的話，Convert.ToString(Eval("Attachment")) 傳回的值就是 String.Empty (也就是空字串啦)，這樣一來就不會發生 Exception 了。

這是一個很小很小的技巧，但是請銘記在心。

**2008-06-20 補充：**

-   我最近發現原來使用 Eval("ID", "") 也可以轉成字串喔，簡短多了，供大家參考！
