2012-07-25 145 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