2012-07-25 182 views
4

我是新來的C#,並與ASP.Net GridView控件(框架3.5)的實驗,我發現了一個大問題,當在GridView文本包含以下內容:特殊(或國外)字符

N/N/A/A/E/E/I/I/O/O/U/U或A,E,I,O,U,E,I,U或甚至是C

結果最終顯示如下:&+#+237

我做了一個表,數據集等疼痛的混合物...得到th來自數據庫的電子數據就像字母本身一樣乾淨。我也嘗試了一種清理變量的方法,但這是一個糟糕的IF。

我想知道是否有一種方法可以在從gridview中提取數據時不會直接從數據庫中獲取數據,也不需要做很多工作,從而使字母顯示爲自己(不是像& +#+ 237)的代碼。如果沒有,是否有辦法有效地編碼清理它們?

回答

5

您的角色正在進行HTML編碼,無論是在數據訪問層的某個位置還是在gridview控件中。在綁定網格之前,嘗試通過HttpUtility.HtmlDecode()運行文本。

如果這不起作用,那麼它可能是在控制級別編碼。我看到你用「文本框」標記了這個問題。標準的ASP.NET TextBox控件將自動編碼分配給其Text屬性的任何內容。相反,您可以使用通用控件System.Web.UI.HtmlControls.HtmlTextAreanew HtmlGenericControl("input")

+0

謝謝老總。你保存了一天。 HttpUtility.HtmlDecode()工作得很好。 – Carlos 2012-07-25 16:51:28

+0

另外,值得注意的是,HTML編碼通常是一件非常好的事情,因爲它可以防止XSS攻擊,特別是如果您的輸入來自用戶輸入。在這種情況下,最好讓它保持編碼。如果您需要檢索未編碼的文本而不返回數據庫,則可以將其存儲在Session或其他一些非輸出存儲中,或者使用jQuery的.text()方法將其從gridview中刪除。 – 2012-07-25 17:43:47

+0

@DerekHunziker我只需要從包含數據庫結果的GridView中提取數據時,就需要解碼/刪除那些惱人的字符。用戶輸入是另一回事。 XD – Carlos 2012-07-26 19:20:51