The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

以 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", "") 也可以轉成字串喔,簡短多了,供大家參考!